Я пытаюсь выполнить цепной вызов в моем модульном тесте, используя библиотеку mockk в Kotlin. Ниже мой код:
@MockK
lateinit var crypto: Crypto
@Before
fun setUp() {
MockKAnnotations.init(this, relaxUnitFun = true)
}
@Test
fun testCryptoFunc() {
// Given
// When
every { crypto.sayHello() } returns "gg" // This works
every { crypto.sayHelloTwice("w").sayHello() } returns "gg" //sayHello() is unresolved
// Then
//val c = crypto.sayHelloTwice("ss")
//print("rr")
}
И мой код реализации:
fun sayHello(): String {
return "hello"
}
fun sayHelloTwice(a: String): String {
return sayHello() + a
}
Я пытаюсь заглушить внутренний вызов (sayHello ()), но получаю неразрешенную ссылку. Согласно документации Mockk для цепных вызовов, это говорит, что это должно быть допустимо.
Я пытался очистить и восстановить (но столкнулся с ошибкой компиляции). Попробовал перезапустить IDE. Пробовал аннулировать кэши и перезапускать.
Есть что-то, что я пропускаю / делаю неправильно?
Ссылки:
https://mockk.io/#chained-calls
https://stackoverflow.com/a/54347784/1342086