【发布时间】:2019-08-18 20:30:49
【问题描述】:
我试图在我的模拟对象上使用 Mockito,使其始终返回作为参数传入的相同对象。我试过这样做:
private val dal = mockk<UserDal> {
Mockito.`when`(insert(any())).thenAnswer { doAnswer { i -> i.arguments[0] } }
}
但是,这条线总是失败:
io.mockk.MockKException: no answer found for: UserDal(#1).insert(null)
insert(user: User) 方法不接受null 作为参数(显然User 不是可空类型)。
如何使insert() 方法始终返回它作为参数接收的相同对象?
【问题讨论】:
-
您是否在测试代码中创建并传递了
user?或者它是在被测代码的其他地方创建的? -
@ArnaudClaudel 我在测试代码中创建并传递它。但是设置行不在实际测试中,它在测试类的顶部,在任何测试之前。
-
然后在测试中添加一行,在调用 insert() 时返回特定实例。我不认为这是一个糟糕的设计
-
@ArnaudClaudel 这不是我想要的,尤其是没有回答我的问题。
-
来自 MockK 的公共 API(我在 1.9.1 版本中使用它)。见github.com/mockk/mockk/blob/…。
标签: java kotlin junit mockito mockk