Тестовый метод удаления REST с использованием Mockito - PullRequest
0 голосов
/ 06 июня 2019

Мне нужна помощь в использовании правильного синтаксиса для Mockito для тестирования метода удаления шаблонов Spring Rest.

Сервисный код:

@Override
    public Boolean deleteCustomerItem(String customerNumber, String customerItemId)
            throws Exception {
        Map<String, String> uriVariables = new HashMap<>();
        uriVariables.put("itemId", customerItemId);
        try {
            ResponseEntity<Void> deleteResponseEntity = restTemplate.exchange( deleteCustomerItemUrl, HttpMethod.DELETE, HttpEntity.EMPTY,
                    Void.class, uriVariables);
            return deleteResponseEntity.getStatusCode().is2xxSuccessful();
        } catch (Exception e) {
            throw new AppCustomerException(e.getMessage());
        }
    }

Код юнит-теста:

@Test
    public void testDeleteCustomerItem() throws AppCustomerException {
        ResponseEntity<Void> noResponse = new ResponseEntity<Void>(HttpStatus.OK);
        when(restTemplate.exchange(anyString(), any(HttpMethod.class), any(HttpEntity.class), Void.class, anyMap()))
                .thenReturn(noResponse);
        Boolean deleteStatus = appCustomerService.deleteCustomerItem("134", "7896");
        assertEquals(Boolean.TRUE, deleteStatus);
    }

Исключение:

Неправильное использование Mockito Matchers. Ожидается 5 матчей 4 записано.

Ответы [ 2 ]

1 голос
/ 07 июня 2019
 when(restTemplate.exchange(
      anyString(), any(HttpMethod.class), any(HttpEntity.class), 
      any(Void.class), anyMap()))
 .thenReturn(noResponse);
  • вы не должны комбинировать муравьеды, такие как anyMap () и anyString () с точными значениями, такими как eq (Void.class) в выражении when (). thenReturn ()

  • также вы можете заменить «Void.class» на любой ()

0 голосов
/ 06 июня 2019

Вы должны обернуть Void.class в совпадение по Mockito:

 when(restTemplate.exchange(
      anyString(), any(HttpMethod.class), any(HttpEntity.class), 
      eq(Void.class), anyMap()))
 .thenReturn(noResponse);

То, как это работает, заключается в том, что все входные данные ArgumentMatcher упакованы или отсутствуют.

...