如何使用 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")
}
您可以模拟 Repo
和 Foo
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()
}
考虑这个伪代码,但这是一般原则。
我有一个域对象。 <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")
}
您可以模拟 Repo
和 Foo
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()
}
考虑这个伪代码,但这是一般原则。