将Matchers.eq()与其他模拟值一起使用时,InvalidUseOfMatchersException

问题描述 投票:0回答:1

在我的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"));

我想要实现的是,我想测试方法的第4个参数是否包含字符串“ Member_Servicing_Email_Update”。其余参数可以嘲笑。我将Matchers.anyObject()用于其他对象,但出现错误,提示无法将anyObject与java.lang.String,Date,HttpServlet等匹配。这里需要做什么?我还只是将eq(“ Member_Servicing_Email_Update”)放到了eq中,但是eq无法识别。

java junit mockito powermockito
1个回答
0
投票

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

verify(widgetHelper, times(1)).invokeAuditService(Matchers.eq(servletRequest), Matchers.eq(date), anyString(), 
                Matchers.eq("Member_Servicing_Email_Update"), Matchers.eq(jsonObject), anyString());
© www.soinside.com 2019 - 2024. All rights reserved.