如何使用 mockk 来验证调用了成员函数?

How to use mockk to verify a member function was called?

我有一个域对象。 <1>

在服务class方法中,它调用域实例的成员函数<2>

我想验证这个成员函数是否被调用。

我怎样才能做到这一点 mockk

data class Foo(val name: String) { <1>
    fun memberFunc() = "Data class: $name"
} 

@Service
class Service(val repo: Repo) {
    fun method(){
        val foo = repo.find()
        foo.memberFunc()           <2>
        otherMethod()
    }
    
    fun otherMethod() = "Call other method"
}

@Repository
class Repo() {
    fun find() = Foo("name")
}

您可以模拟 RepoFoo classes。

val fooMock = mockk<Foo>()
every { fooMock.memberFunc() } return "A value"

val repoMock = mockk<Repo>()
every { repoMock.find() } return fooMock

现在您可以使用您的测试目标 class:

val testTarget = Service(repoMock)

testTarget.method()

verify {
  fooMock.memberFunc()
}

考虑这个伪代码,但这是一般原则。