Spring Boot Test - Mockito - возврат вызова службы null

Я тестирую в своем контроллере метод post, который возвращает только строку и использую Mockito для имитации вызова службы. Моя проблема в том, что когда метод службы вызывается на контроллере, он возвращает значение null.

@RunWith(SpringRunner.class)
@WebMvcTest(ProcessGroupController.class)
public class ProcessGroupRestControllerTest {
    .............

    @Test
    public void givenAllNifiArguments_whenImportProcessGroup_thenReturnJsonOk() throws Exception {
        NiFiArguments niFiArguments = NiFiArguments.builder()......flowVersion("3").build();

        String expected = "1689d61b-624d-4574-823d-f1b4755882e1";

        String json = mapper.writeValueAsString(niFiArguments);

        //Mock service call
        when(nifiService.importProcessGroup(niFiArguments)).thenReturn(expected);

        mvc.perform(post("/nifi/pg-import").contentType(MediaType.APPLICATION_JSON).content(json))
                .andExpect(status().isCreated())......);
    }

Контроллер:

    @PostMapping("/pg-import")
    public ResponseEntity<String> importProcessGroup(@RequestBody NiFiArguments niFiArguments)
            throws NiFiClientException {
        log.info("Called method importFlow");

        String result = nifiService.importProcessGroup(niFiArguments);

        return new ResponseEntity<String>(result, HttpStatus.CREATED);
    }

String result = null

У меня есть похожие тесты, которые возвращают POJO, и он отлично работает


person Aldo Inácio da Silva    schedule 15.05.2020    source источник
comment
Есть ли у NiFiArguments метод equals ()? Если нет, то экземпляр, который вы используете для настройки макета и вызова метода, не будет считаться равным (они не одинаковы), и фиктивный вызов не будет сопоставлен.   -  person ekalin    schedule 15.05.2020


Ответы (1)


Как сказал Экалин, моему классу-строителю необходимо реализовать equals и hashcode:

@Builder
@Getter
@EqualsAndHashCode
public class NiFiArguments {

    private String bucketIdentifier;
    private String flowIdentifier;
    private String flowVersion;
    private String baseUrl;
}

person Aldo Inácio da Silva    schedule 15.05.2020