2015-03-06 3 views
5

Я столкнулся странном вопрос с модульным тестированием следующего джерси клиентом вызова:Джерси/Mockito: NullInsteadOfMockException по проверке client.post вызова

PostBody является MultivaluedMap.

тест

Устройство проверяет штраф в accept и type вызовы, но не на post один с этим исключением:

org.mockito.exceptions.misusing.NullInsteadOfMockException: 
Argument passed to verify() should be a mock but is null! 

Вот код теста:

_client = Mockito.mock(Client.class); 
     _webResource = Mockito.mock(WebResource.class); 
     _builder = Mockito.mock(WebResource.Builder.class); 
     _response = Mockito.mock(ClientResponse.class); 

     Mockito.when(_client.resource(Mockito.anyString())).thenReturn(_webResource); 

     Mockito.when(_response.getEntity(Mockito.any(Class.class))).thenReturn(new RefreshTokenDto()); 
     Mockito.when(_response.getStatus()).thenReturn(200); 

     Mockito.when(_builder.post(Mockito.eq(ClientResponse.class), Mockito.anyObject())).thenReturn(_response); 
     Mockito.when(_builder.type(Mockito.anyString())).thenReturn(_builder); 
     Mockito.when(_webResource.accept(Mockito.anyString())).thenReturn(_builder); 

     RefreshTokenDto response = _clientWrapper.exchangeAuthorizationCodeForToken(_token); 

     Assert.assertNotNull(response); 

     Mockito.verify(_client.resource(_baseUrl + "token")); 
     Mockito.verify(_webResource.accept("application/json")); 
     Mockito.verify(_builder.type("application/x-www-form-urlencoded")); 

     // TODO: this line throws NullRefExc for some unknown reason 
     Mockito.verify(_builder.post(Mockito.any(Class.class), Mockito.any(MultivaluedMap.class))); 

Вы можете увидеть что-то неправильно с этим код?

ответ

9

Да. Вы неправильно использовали verify. Аргументом для verify должен быть сам макет. Затем вы вызываете метод, который хотите проверить, по значению, которое возвращается verify. Таким образом, в этом случае первый verify вызов должен быть

Mockito.verify(_client).resource(_baseUrl + "token"); 

и аналогично для других verify вызовов.

+0

Эй, это действительно решает проблему! Я смутил синтаксис 'when' и' verify'. Я смотрел этот код со вчерашнего дня и не мог понять, что случилось. Вероятно, это показывает, что я новичок в mockito. Спасибо за вашу помощь! –

+0

Нет проблем. Удачи вам в продолжении обучения, Джоанна. –

Смежные вопросы