Макет не в состоянии If - PullRequest
0 голосов
/ 21 марта 2019

В моем контроллере я выполняю проверку валидации в блоке if с использованием класса валидатора.

Поскольку код валидации еще не завершен, я просто хочу проверить, что, если валидация прошла успешно, ответ должен быть201 (успех).

Для этого я высмеиваю поведение объекта-валидатора, возвращая true, то есть его действительность.

Проблема в том, что даже если я высмеял поведение объекта-валидатора, чтобы невведите блок if, чтобы он не генерировал исключение проверки, это фактически ввод и исключение.Это означает, что насмешка не сработала.Я знаю, что плохо предполагать реализацию метода для тестирования, но я хочу знать, почему он не работает.

myController.class

@RestController
@RequestMapping("/v1/api")
public class myController {


    @Autowired
    private RequestService requestService;

    @Autowired
    RequestValidator validator;

    @PostMapping(value = "")
    @ResponseStatus(code = HttpStatus.CREATED)
    public @ResponseBody
    BaseResponse<Response> create(@RequestBody Request<Data> request){


        if(!validator.isValidRequestObject(request))
        {
            throw new RuntimeException("invalid request");
        }

        Response data = requestService.submitData(request);
        BaseResponse<Response> response = new BaseResponse<Response>();
        response.setData(data); 
        response.setMessage("Created Successfully");
        return response;


    }

ControllerTest.class

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    Request<Data> request;

    @MockBean
    RequestService service;

    @MockBean
    RequestValidator validator;

    ObjectMapper mapper = new ObjectMapper();

    @Test
    public void createTest() throws Exception {

        when(validator.isValidRequestObject(request)).thenReturn(true);
        when(service.submitData(request)).thenReturn(null);

        this.mockMvc.perform(post("/v1/api")
                             .content(mapper.writeValueAsString(request))
                             .contentType(MediaType.APPLICATION_JSON))
                    .andExpect(status().isCreated());

    }

Если я удалю строку throw new exception, тест пройден.я предполагаю, что, поскольку я высмеял validator поведение в myController, он не должен входить в блок и, следовательно, не генерировать исключение.Но он входит в блок if и вызывает исключение, игнорирующее насмешливое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...