2 回答
TA贡献1852条经验 获得超7个赞
在您的测试用例中,您试图验证对此方法的调用:
public void addTask(String taskName) throws SQLException {
taskActions.addTask(new Task(taskName), connectedUser);
}
有了这个:
User user = new User("admin","123");
...
verify(taskActionsMock).addTask(taskName,user);
失败信息...
Actual invocation has different arguments:
taskActionsMock.addTask(
Task(taskName=wash),
null
);
... 告诉我们connectedUser在测试调用中的值为null。
查看您的代码,该connectedUser成员ToDoEngine由对该signIn()方法的调用填充,但您的测试用例并未调用该方法,因此connectedUser在addTask您的测试调用时为null 。
因此,如果您不需要/想要测试是否提供了正确的用户,addTask那么只需将您的验证调用更改为: verify(taskActionsMock).addTask(taskName,null)
但是,这感觉像是一种回避,因此您应该确保它connectedUser不为空,并且是您在测试用例中提供给 verify 调用的值。
TA贡献2041条经验 获得超4个赞
您的verify
方法指定您希望addTask
使用特定对象taskName
和user
对象进行调用。
verify(taskActionsMock).addTask(taskName,user);
但是由于您的连接用户是null
这种期望失败了。如果您不关心连接的用户,您可以使用匹配器告诉 Mockito 忽略其实际值。例如
verify(taskActionsMock).addTask(ArgumentMatchers.eq(taskName), ArgumentMatchers.any());
或者,如果您确实关心用户,只需将您的 ToDoEngine 设置为连接用户即可。
添加回答
举报