doReturn(...).when(...).* に相当するモックを探しています。
私は、多くのシステム クラスを含むいくつかの単体テスト (コントラクトのテスト) の作成に取り組んでいるため、制御していないメソッドをインターセプトし、いくつかのコール バックを返す必要があります (コード内のメソッドは最終的に返されます)。mockito では、doReturn(...).when(...).* のようなことができます。
mockK で同様のものを見つけることができませんでした。every{} は、回答またはリターンの前に常にブロックを実行しているようです。{}
class Vehicle: Listener {
fun displayCar(listener:Listener){
OtherClass().fetchCar(listener)
}
override fun showCarSuccessful() {
//do something
}
}
class OtherClass {
//assume its an outside function that returns nothing but invokes a method of listener call back
fun fetchCar(listener: Listener) {
//... Some system level operations that I don't have control to generate mock objects but in the test I want to use the listener to call some method so that I can
// test some contracts
listener.showCarSuccessful()
}
}
class Tests {
@Test
fun testCarSuccess() {
val listener: Listener = mockk(relaxed = true)
val vehicle = Vehicle()
//also tried with mockkClass and others
val other: OtherClass = mockk(relaxed = true)
every { other.fetchCar(listener) } returns {listener.showCarSuccessful()}
vehicle.displayCar(listener)
//do some verification checks here
}
}
interface Listener {
fun showCarSuccessful()
}