java - 在弹簧休息控制器单元测试用例中获得空白响应
问题描述
我已经为下面的 put 方法编写了弹簧休息控制器的单元测试用例
@PutMapping("/offers/{jobTitle}")
public Offer updateOffer(@PathVariable String jobTitle,@Valid @RequestBody Offer offer) {
return offerService.updateNoOfPost(jobTitle, offer);
}
下面是我的服务类
@Override
public Offer updateNoOfPost(String jobTitle, Offer offer) {
if(!offerRepository.existsById(jobTitle))
throw new ResourceNotFoundException("JobTitle "+jobTitle+" not found !!");
offer.setNoOfPost(offer.getNoOfPost());
return offerRepository.save(offer);
}
我已经使用 testNg 和 mockito 为这个方法编写了单元测试用例
public class OfferControllerTest {
private MockMvc mvc;
private JacksonTester<Offer> jsonOffer;
@Mock
private OfferService service;
@InjectMocks
OfferController offerController;
private Offer offer;
@BeforeMethod
public void setup() {
offer = new Offer("LSE", new Date(),1);
MockitoAnnotations.initMocks(this);
mvc = MockMvcBuilders.standaloneSetup(offerController)
.build();
JacksonTester.initFields(this, new ObjectMapper());
}
@Test
public void updateOffer() throws Exception {
Mockito.when(service.updateNoOfPost("LSE", offer)).thenReturn(offer);
MockHttpServletResponse response = mvc.perform(
put("/offers/LSE").contentType(MediaType.APPLICATION_JSON).content(
jsonOffer.write(new Offer("SE", new Date(), 19)).getJson()
)).andReturn().getResponse();
assertThat(response.getContentAsString()).isEqualTo(new ObjectMapper().writeValueAsString(offer));
}
我得到的响应代码为 200。但得到空白 body.pls 在下面找到错误
FAILED: updateOffer
org.junit.ComparisonFailure: expected:<"[{"jobTitle":"LSE","createdAt":"2018-10-27","noOfPost":1}]"> but was:<"[]">
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
我错过了什么?这是为弹簧休息控制器编写单元测试用例的标准方法吗?
解决方案
下面的模拟应该可以解决这个问题
Mockito.when(service.updateNoOfPost(Mockito.any(String.class), Mockito.any())).thenReturn(offer);
在此处阅读更多信息: stack-46914252
推荐阅读
- python - Python Selenium如何查找具有变化文本的元素
- c# - 连接到 SOAP 服务 (.NET 4.7) 时验证消息错误的安全性时出错
- sql - 可序列化事务隔离级别是否保证非数据库代码也被序列化?
- python - isinstance 如何在 python 中为子类工作?
- php - Laravel 每天按奇数小时对数据进行分组
- python-3.x - 我是否需要使用 base64 通过 UDP 发送视频?
- html - 使可折叠侧边栏越过 div/或不将内容推送到下一行
- angular - api 角度表:没有导出的成员“RestComponent”
- java - 如何使用 JavaSwing 显示用户在 JFrame 上选择的图像
- django - 如何在 django 模板中显示 django 表单?