Я столкнулся со странной проблемой при модульном тестировании следующего вызова клиента jersey:
WebResource webResource = _client.resource(url);
ClientResponse response = webResource
.accept("application/json")
.type("application/x-www-form-urlencoded")
.post(ClientResponse.class, postBody);
PostBody - это многозначная карта.
Модульный тест правильно проверяет вызовы 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)));
Вы видите что-то не так с этим кодом?
2 ответа
Да. Вы неправильно использовали verify
. Аргументом для verify
должен быть сам макет. Затем вы вызываете метод, который хотите проверить для значения, возвращаемого verify
. Итак, в этом случае первый вызов verify
должен быть
Mockito.verify(_client).resource(_baseUrl + "token");
И то же самое для других вызовов verify
.
Я столкнулся с этой проблемой, но для when()
вместо verify()
. Я нашел этот вопрос в Google. Что касается меня, я забыл добавить MockitoAnnotations.initMocks()
в конструкторе моего тестового класса.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.