java - 将 Matchers.eq() 与其他模拟值一起使用时出现 InvalidUseOfMatchersException

标签 java junit mockito powermockito

在我的 JUnit 类中,我有以下代码:

@Mock
private HttpServletRequest servletRequest;

@Mock
WidgetHelper widgetHelper;

@Mock
JSONObject jsonObject;

@Mock
Date date;

verify(widgetHelper, times(1)).invokeAuditService(servletRequest, date, anyString(), 
                        Matchers.eq("Member_Servicing_Email_Update"), jsonObject, anyString());

我得到以下输出:

This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));

我想要实现的目标是:我想测试该方法的第四个参数是否包含字符串“Member_Servicing_Email_Update”。其余的论点都可以被 mock 。我为其他人使用 Matchers.anyObject() ,但收到错误消息 cannot match anyObject to java.lang.String, Date, HttpServlet 等。这里需要做什么?我也刚刚输入了 eq("Member_Servicing_Email_Update")eq 未被识别。

最佳答案

为所有原始参数添加Matchers.eq:

verify(widgetHelper, times(1)).invokeAuditService(Matchers.eq(servletRequest), Matchers.eq(date), anyString(), 
                Matchers.eq("Member_Servicing_Email_Update"), Matchers.eq(jsonObject), anyString());

When using matchers, all arguments have to be provided by matchers

关于java - 将 Matchers.eq() 与其他模拟值一起使用时出现 InvalidUseOfMatchersException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59641780/

相关文章:

java - Mockito 当方法不起作用时 [MockitoHint] 1. 未使用

java - 如何在mockito中将数组的数组与相同的值进行匹配

java - 为什么接口(interface)可以在抽象类中实现,而不能在其他接口(interface)中实现?

Unity3D上的Java插件无法启动新线程

java - Android Log类中的d方法

java - 计算机视觉 - 使用 OpenCV 过滤凸包和凸面缺陷

java - JUnit - 初始化错误中的异常

android - 尝试在 SQLite 数据库上运行 androidTest 时出现空对象引用错误

java - 如何编写接口(interface)自定义保存方法的测试用例

eclipse - 如何使 JUnit4 + Hamcrest 1.3 + Mockito 从 Eclipse 和 Tycho 工作