为void方法使用doNothing方法时,出现UnfinishedStubbingException

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

以下代码导致UnfinishedStubbingException

PowerMockito.doNothing().when(widgetHelper).invokeAuditService(Matchers.eq(servletRequest), Matchers.eq(date), anyString(), Matchers.eq("Member_Servicing_Email_Update"), Matchers.eq(jsonObject), anyString());

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


org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:
    -> at ....

    E.g. thenReturn() may be missing.
    Examples of correct stubbing:
        when(mock.isOk()).thenReturn(true);
        when(mock.isOk()).thenThrow(exception);
        doThrow(exception).when(mock).someVoidMethod();
    Hints:
     1. missing thenReturn()
     2. you are trying to stub a final method, you naughty developer!

我在这里想念什么?下面是invokeAuditService的方法签名

public static void invokeAuditService(HttpServletRequest request, Date serviceCallTime, String response, 
            String activityKey, JSONObject detailsReplaceVal, String pmAccountId){
        AuditLogUtils.invokeAuditService(request, date, response, activityKey, json,  someString);
    }

我这样做:

PowerMockito.mockStatic(WidgetHelper.class);
        PowerMockito.doNothing().when(WidgetHelper.class);
        WidgetHelper.invokeAuditService(Matchers.eq(servletRequest), Matchers.eq(date), anyString(), 
                Matchers.eq("Member_Servicing_Email_Update"), Matchers.eq(jsonObject), anyString());

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

Junit运行没有任何错误,但由于我在Member_Servicing_Email_Update中通过了when,在verify中通过了Member_Servicing_Email_Update123,所以它应该失败了>

下面的代码导致UnfinishedStubbingException PowerMockito.doNothing()。when(widgetHelper).invokeAuditService(Matchers.eq(servletRequest),Matchers.eq(date),anyString(),Matchers.eq(“ ...

java junit mockito powermockito
1个回答
0
投票

错误是由以下行引起的,这是无效的语法:PowerMockito.doNothing().when(WidgetHelper.class);

[创建模拟所有内容时,方法调用默认为doNothing。因此,您无需明确声明它。

© www.soinside.com 2019 - 2024. All rights reserved.