MockK - 验证参数不匹配失败

时间:2018-02-21 15:08:33

标签: mockk

我注意到有时候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) }

1 个答案:

答案 0 :(得分:1)

我不确定这是否是一个错误,但快速解决方法是使用stuff作为验证,因为您希望返回的值为:

verify { testService.testStuff(stuff) }

通过这种方式,您仍然会测试行为是否已被调用,并且当您模拟返回testInterface以返回stuff时,这应该可以正常工作。

Mockk中的

I created an Issue就此而言,当有更新内容时,我会更新此答案。