我注意到有时候verify
失败了“......呼唤......发生了,但是参数不匹配”
以下示例测试显示验证失败:
class TestStuff {
val stuff = "1"
@RelaxedMockK
lateinit var testService: TestService
@RelaxedMockK
lateinit var testInterface: TestInterface
@Before
fun setup() {
MockKAnnotations.init(this)
every { testInterface.testStuff } returns stuff
}
@Test
fun testStuffCalled() {
testService.testStuff(testInterface.testStuff)
verify { testService.testStuff(testInterface.testStuff) }
}
}
interface TestInterface {
val testStuff: String
}
class TestService {
fun testStuff(stuff: String) {
}
}
如果我将带有验证调用的行更改为以下2行,则它可以工作:
let testStuffCopy = testInterface.testStuff
verify { testService.testStuff(testStuffCopy) }
答案 0 :(得分:1)
我不确定这是否是一个错误,但快速解决方法是使用stuff
作为验证,因为您希望返回的值为:
verify { testService.testStuff(stuff) }
通过这种方式,您仍然会测试行为是否已被调用,并且当您模拟返回testInterface
以返回stuff
时,这应该可以正常工作。
I created an Issue就此而言,当有更新内容时,我会更新此答案。