Должны ли мы проверить getForObject? - PullRequest
0 голосов
/ 15 мая 2019

Я пишу простой REST-клиент, в моем классе обслуживания есть один метод, использующий

RestTemplate.getForObject()

Я бы хотел попрактиковаться в тестировании, но я не знаю, стоит ли нам тестировать класс. Я также не знаю, как проверить метод, который не делает много. Должен ли я написать какие-либо модульные тесты?

1 Ответ

0 голосов
/ 15 мая 2019

Вы можете проверить, что запрос был отправлен.Например, у вас есть следующий сервис:

@Service
public void QueryService {

    private final RestTemplate restTemplate;

    @Autowired
    public QueryService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    public List<Employee> void makeQuery() {
        ResponseEntity<List<Employee>> response = restTemplate.getForObject(
            "http://localhost:8080/employees",
            EmployeeList.class);
        return response.getEmployees();
    }
}

Для метода makeQuery вы можете написать следующий модульный тест:

@RunWith(MockitoJUnitRunner.class)
public class QueryServiceTest {

    @Mock
    private RestTemplate restTemplate;

    @InjectMocks
    private QueryService queryService;

    @Test
    public void testMakeQueryRequestHasBeenSent() {
        List<Employee> result = queryService.makeQuery();

        // This string checks that method getForObject has been invoked
        verify(restTemplate).getForObject(anyString(), any(Class.class));
    }
}

В будущем, если вы измените makeQuery метод и забудьте отправить запрос, используя restTemplate, этот тест не пройден.

...