java - java.lang.AssertionError:预期状态:<200> 但原为:<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));
}
}
有什么我错过的吗?顺便说一句,我不使用 Json。我只是插入它,因为它有效。
解决方案
这就是你返回的。
return new ResponseEntity<>(response, HttpStatus.CREATED);
HttpStatus.CREATED
返回201表示请求已创建资源
在您的测试用例中,您如何期望 OK(200).andExpect(status().isOk());
根据HTTP1.1/specs发布请求应始终导致创建资源。所以从那里返回 201 是有意义的。您需要做的就是将您的测试用例断言预期值更改为 HTTPStatus.CREATED。
推荐阅读
- git - 推后撤消提交
- python - Discord.py voiceClient.play() 无法识别
- c# - MS Graph - 有没有办法创建一个模拟 DriveItemChildrenCollection?
- reactjs - 反应路由器
在定义的 App.js 内的顶层不起作用 - flutter - 如何在 Flutter 中使用全局键制作 StatefulWidget?
- python - 修改 given/when/then 装饰器以处理 Behave 中的异常
- c# - C# 文化:不同语言的小时和分钟
- c - 命名管道任务
- mysql - 根据MYSQL中的where子句在两个单独的列中显示数据
- spring-data-jpa - 没有 @ID/主键的 Spring Data JPA 实体