Как проверить конечную точку Rest API, которая получает значение от постоянно меняющегося внешнего API - PullRequest
1 голос
/ 21 апреля 2019

Я использую внешний API, который возвращает список отсортированных по дате Objects со многими (около 30) свойствами.

Я написал простой Rest API, используя Spring Boot с одной конечной точкой /newest_obj_name которые просто возвращают в настоящее время самое новое имя объекта из этого списка и игнорируют все остальное.

Как я могу в достаточной степени протестировать этот код, в то время как значение из внешнего API постоянно меняется, поэтому я не могу просто использовать String expected, как в коде ниже?

Вообще говоря, как подойти ко всему вопросу тестирования в этом сценарии?

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyTest {

    @LocalServerPort
    private int port;

    private TestRestTemplate restTemplate = new TestRestTemplate();

    private HttpHeaders headers = new HttpHeaders();

    @Test
    public void testRetrieveNewest() {

        HttpEntity<String> entity = new HttpEntity<String>(null, headers);

        ResponseEntity<String> response = restTemplate.exchange(
                createURLWithPort("/newest_obj_name"),
                HttpMethod.GET, entity, String.class);

        String expected = "{\"name\":\"crazy\"}";

        try {
            JSONAssert.assertEquals(expected, response.getBody(), false);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    private String createURLWithPort(String uri) {
        return "http://localhost:" + port + uri;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...