![](/img/trans.png)
[英]java.lang.AssertionError: Status expected:<201> but was:<400>
[英]java.lang.AssertionError: Status expected:<200> but was:<201>
嗨,我正在尝试在控制器中实现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));
}
}
我有什么想念的吗? 顺便说一句,我不使用杰森。 我刚刚插入它是因为它有效。
那就是你的回报。
return new ResponseEntity<>(response, HttpStatus.CREATED);
HttpStatus.CREATED
返回201,并指示该请求已创建资源
在测试用例中,您期望的是OK(200) .andExpect(status().isOk());
根据HTTP1.1 / specs,发布请求应始终导致资源的创建。 因此从那里返回201很有意义。 您所需要做的就是将您的测试用例断言期望值更改为HTTPStatus.CREATED。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.