Как смоделировать сервис и проверить метод POST-контроллера - PullRequest
2 голосов
/ 18 июня 2019

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

Смеял сервис для возврата погодного ресурса при вызове метода сервиса.

POSTметод для ресурса погоды:

    @ApiOperation("Creates a new weather data point.")
    public ResponseEntity<Weather> createWeather(@Valid @RequestBody Weather weather) {     
        try {
            Weather createdWeather = weatherService.createWeather(weather);

            return ResponseEntity.ok(createdWeather);
        } catch(SQLException e) {
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

Тест:

    @Test
    public void createWeather_200() throws Exception {
        Weather weather = new Weather(null, "AC", new Date(1560402514799l), 15f, 10, 2);
        Weather createdWeather = new Weather(1, "AC", new Date(1560402514799l), 15f, 10, 2);

        given(service.createWeather(weather)).willReturn(createdWeather);

        MvcResult result = mvc.perform(post("/weather")
                .contentType(MediaType.APPLICATION_JSON)
                .content(objectMapper.writeValueAsString(weather)))
        .andExpect(status().isOk())
                .andExpect(jsonPath("$['id']", is(createdWeather.getId())));

    }

Тесты работают для методов GET и DELETE.Может ли быть так, что данный погодный объект в тесте не соответствует реальному объекту, созданному в контроллере?

1 Ответ

2 голосов
/ 18 июня 2019

Вы говорите Mockito, что ожидаете точный weather объект в качестве ввода.

Когда вы вызываете mvc, хотя объект преобразуется в JSON, а затем анализируется и, наконец, передается в Service как экземпляр, отличный от того, который вы передаете в Mockito.

Решение заключается в использовании подстановочного знака следующим образом:

given(service.createWeather(Mockito.any(Weather.class))).willReturn(createdWeather);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...