У меня возникла проблема при насмешке над методом, который вызывается в другом методе.
Например: Ниже в моем основном классе.
class Trial extends TrialTrait {
def run(): String ={
val a = createA()
val b = a.split(" ")
val c = b.size
val d = c + " words are there"
d
}
def createA(): String = {
var a = "above all the things that have been done, one thing remained in silent above all the things that have been done one thing remained in silent above all the that "
a
}
}
Ниже мой фиктивный код.
class TryMock4 extends FunSuite with BeforeAndAfterEach with MockFactory {
val trial = new Trial
val st = stub[TrialTrait]
test("Mocking the DataFrame") {
val input = "above all the things that have been done, one thing remained in silent above "
(st.createA _).when().returns(input)
val expected = "14 words are there"
val actual = st.run()
Assert.assertEquals(expected,actual)
}
}
Что я пытаюсь сделать, так это передать фиктивные данные createA
и использовать их в методе run
.
Но он дает значение null
после запуска метода run
.
Не могли бы вы подсказать, как этого можно добиться?
spy
. Но на самом деле тот факт, что вам нужно имитировать внутренний метод для тестирования, является признаком какого-то неправильного дизайна. Поэтому я настоятельно рекомендую сначала подумать о рефакторинге вашего кода. - person SergGr   schedule 23.01.2019spy
? - person SergGr   schedule 23.01.2019