mockk,刚刚运行的是什么

lan*_*nyf 19 kotlin mockk

找不到有关“just run”的解释,用它存根函数时意味着什么?

它会让模拟对象调用它的真实函数,还是让该函数运行一个不执行任何操作的存根?

是否有示例来展示一些真实的用例?

@Test
fun `mocking functions that return Unit`() {
    val SingletonObject = mockkObject<SingletonObject>()
    every { SingletonObject.functionReturnNothing() } just Runs. // ???

    SingletonObject.otherMemberFunction(). //which internally calls functionReturnNothing()
    //...
}
Run Code Online (Sandbox Code Playgroud)

无论有没有这个every { SingletonObject.functionReturnNothing() } just Runs存根,测试都是一样的。

lan*_*nyf 27

@Raibaz 的答案副本:

just runs用于Unit在严格模拟上返回(即不返回值)的方法。

如果您创建一个未放松的模拟并调用其上未使用every块存根的方法,MockK 将抛出异常。

要存根返回 Unit 的方法,您可以这样做

every { myObject.myMethod() } just runs
Run Code Online (Sandbox Code Playgroud)

不,它没有(就像mockito的.thenCallRealMethod()):)
它“只是运行”,这意味着它不执行任何操作。

要运行真实的方法,您可以使用:

every { ... } answers { callOriginal() }
Run Code Online (Sandbox Code Playgroud)