Неудачные тесты для клиента джерси - PullRequest
0 голосов
/ 25 октября 2018

У меня есть клиент jersey, например

 public ClientResponse getCall(String apiName){
         restClient = getRestClient();
        WebResource webResource = restClient
                .resource(Constants.FUELWISE_END_POINT+apiName);
         return  webResource.accept(Constants.APPLICATION_JSON)
                 .header(Constants.AUTHORIZATION_HEADER, Constants.AUTHORIZATION_VALUE).get(ClientResponse.class);
    }

, и строка теста mockito, например:

   @Test
    public void getCallTest() {

        when(restClient.resource(any(String.class))).thenReturn(webResource);

        when(webResource.accept(any(String.class)).header(any(String.class), any(Object.class))
                .get(eq(ClientResponse.class))).thenReturn(clientResponse);

        restUtilityTest.getCall("messages");
    }

, имеет расширенный тестовый класс java для возврата mock restClient вместо Client.create ()из метода getRestClient ()

с использованием аннотаций для макетирования с использованием @ Mock

Ошибка трассировки стека:

This message may appear after an NullPointerException if the last matcher is returning an object 
like any() but the stubbed method signature expect a primitive argument, in this case,
use primitive alternatives.

Макетирование выполнено в файле тестового примера:

    @InjectMocks
    private RestUtilityTest restUtilityTest;

    @Mock
    private Client restClient;

    @Mock
    private WebResource webResource;

    @Mock(name = "response")
    private ClientResponse clientResponse;

1 Ответ

0 голосов
/ 25 октября 2018

Убедитесь, что испытуемый объект и его зависимости расположены правильно.

@Test
public void getCallTest() {
    //Arrange    
    ClientResponse clientResponse = mock(ClientResponse.class);

    WebResource webResource = mock(WebResource.class);    
    when(webResource
            .accept(any(String.class))
            .header(any(String.class), any(String.class))
            .get(eq(ClientResponse.class))
        )
        .thenReturn(clientResponse);

    Client restClient = mock(Client.class);
    when(restClient.resource(any(String.class))).thenReturn(webResource);

    RestUtilityTest restUtilityTest = new RestUtilityTest(restClient);

    //Act
    ClientResponse response = restUtilityTest.getCall("messages");

    //Assert
    //...
}

Обратите внимание на использование any(String.class) и eq() для сопоставления аргументов

Выше предполагается, чтоподдельный веб-ресурс правильно вводится в тестируемый предметный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...