【问题标题】:Mockk in Kotlin: Argument passed to verify is not a mockKotlin 中的 Mockk:通过验证的参数不是模拟
【发布时间】:2019-08-18 22:36:03
【问题描述】:

我已将我的模拟定义如下:

private val dal = mockk<UserDal> {
    every { insert(any()) } returnsArgument 0
}

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

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

    verify(dal).insert(check {
        assertEquals(it.firstName, "John")
    })
}

这会引发异常:

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!

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

【问题讨论】:

  • 你又来了。您正在尝试使用 Mockito 来处理 MockK 模拟。不要那样做。从您的依赖项中删除 Mockito。您不能使用 Mockito API 来处理 MockK 模拟。它们是不同的、不兼容的模拟框架。你说你在stackoverflow.com/questions/57548165/… 中理解了这一点,但你一直在尝试将 Mockito 与 MockK 一起使用。你真的明白吗?

标签: java kotlin junit mockito mockk


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-30
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2021-03-05
    • 1970-01-01
    • 2022-08-19
    相关资源
    最近更新 更多