3

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()
}
4

1 に答える 1