UnfinishedStubbingException при работе с методом doNothing для методов void - PullRequest
0 голосов
/ 08 января 2020

Приведенный ниже код вызывает исключение 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

1 Ответ

0 голосов
/ 08 января 2020

Ошибка вызвана следующей строкой, которая имеет недопустимый синтаксис: PowerMockito.doNothing().when(WidgetHelper.class);

При создании фиктивного все вызовы метода it по умолчанию принимают значение doNothing. Поэтому вам не нужно объявлять это явно.

Однако, если вы хотите объявить поведение, вам нужно назвать связанный метод. Который отсутствует в данной строке.

...