java.lang.AssertionError: Ожидаемый статус: <200>, но был: <201> - PullRequest
0 голосов
/ 01 июня 2018

Привет, я пытаюсь внедрить junit в моем контроллере.Но я получаю 201 вместо 200.

Ниже мой контроллер

@RestController
@RequestMapping(value = "/treat")
public class TreatController {

  private final TreatService treatService;

@Autowired
  public TreatController(TreatService treatService){
    this.treatService = treatService;
  }

@PostMapping
  public ResponseEntity<CommonResponse> addNew(
      @RequestBody Treat treat) throws RecordNotFoundException{
    CommonResponse response = new CommonResponse();
    response.setStatus(CommonConstants.OK);
    response.setData(treatService.save(treat));
    return new ResponseEntity<>(response, HttpStatus.CREATED);
  }
}

Следующее - мой тест Junit:

@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(TreatController.class)
public class TreatControllerTest {

  private RecordNotFoundException recordException = new RecordNotFoundException("");

  private final String title = "{\"title\" : \"title\"}";

  @Autowired
  private MockMvc mockMvc;

  @MockBean
  private TreatService treatService;

@Test
  public void addNew() throws Exception{
    Treatment treatment = new Treatment();

    given(treatmentService.save(
        Mockito.any(Treat.class))).willReturn(treat);
    mockMvc.perform(post("/treats")
    .content(title)
    .accept(MediaType.APPLICATION_JSON_VALUE)
    .contentType(MediaType.APPLICATION_JSON_VALUE))

    .andDo(print())
    .andExpect(status().isOk());

    Mockito.verify(treatService).save(Mockito.any(Treat.class));
  }
}

есть что-то, что я пропустил?Кстати, я не использую Json.Я просто вставил его, потому что он работает.

1 Ответ

0 голосов
/ 01 июня 2018

Это то, что вы возвращаете.

return new ResponseEntity<>(response, HttpStatus.CREATED);

HttpStatus.CREATED возвращает 201 и указывает, что ресурс был создан по запросу

Как бы то ни было, в вашем тестовом примере вы ожидаете OK (200) .andExpect(status().isOk());

Согласно HTTP1.1 / specs Почтовый запрос всегда должен приводить к созданию ресурса.Так что имеет смысл вернуть 201 оттуда.Все, что вам нужно сделать, это изменить ожидаемое значение подтверждения тестового набора на HTTPStatus.CREATED.

...