Kotlin 中的 Mockk:传递给验证的参数不是模拟

Whi*_*zil 3 java junit mockito kotlin mockk

我将我的模拟定义如下:

private val dal = mockk<UserDal> {
    every { insert(any()) } returnsArgument 0
}
Run Code Online (Sandbox Code Playgroud)

然后,我尝试像这样测试它:

@Test
fun test() {
    userService.registerUser(userJohn)

    verify(dal).insert(check {
        assertEquals(it.firstName, "John")
    })
}
Run Code Online (Sandbox Code Playgroud)

这会引发异常:

org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to verify() is of type UserDal and is not a mock!
Make sure you place the parenthesis correctly!
Run Code Online (Sandbox Code Playgroud)

我不明白它怎么会说这UserDal不是模拟,而它显然是模拟!这段代码有什么问题?如何验证参数字段?

JB *_*zet 6

Mockito 和 MockK 是两个不同的、不兼容的模拟框架。您不能使用 Mockito API 来存根或验证 MockK 创建的模拟。反之亦然。