Spring boot 测试返回响应实体的控制器
我有一个控制器,它接受post请求并返回带有主体的响应实体Spring boot 测试返回响应实体的控制器,spring-boot,model-view-controller,junit,entity,response,Spring Boot,Model View Controller,Junit,Entity,Response,我有一个控制器,它接受post请求并返回带有主体的响应实体 @RestController public class UserController { @Autowired private UserService UserService; @RequestMapping(value = "/all", method = POST,consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity&l
@RestController
public class UserController {
@Autowired
private UserService UserService;
@RequestMapping(value = "/all", method = POST,consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<ResponseUser>> navigationTree(@RequestBody(required=false) UserDataRequest request) {
return UserService.sendEntries(request);
}
}
我想将响应正文中接收的字符串与预期的字符串进行比较
我尝试了字符串比较,但不起作用
错误:
assertThat(Objects.equals(expectedJson, actualJson)).isTrue();
而实际上JSON是空的
还有哪些方法?在执行this.mockMvc.perform之前,您需要模拟UserService以返回一些内容。大概是这样的:
when(UserServiceMock.sendEntries(null)).thenReturn(expectedResponceEntity);
因此,只需构造预期的响应,然后模拟UserService来返回它 首先解释一下不工作。。请粘贴实际JSON和结果。可以使用.jsonPath比较各个值,但不确定是否可以比较整个json。检查这个问题。对于ResonSet entity.jsonpath不工作,它正在工作。但是,为什么我们要模拟用户服务呢?您不必模拟它,但您确实用@MockBean行模拟了它。如果你不想嘲弄它,但仍然要做一个调整,那么就考虑“SPYBEN”。使用@SpyBean,您可以保留mock选项,而无需实际执行,并且仍然可以对其进行验证。
when(UserServiceMock.sendEntries(null)).thenReturn(expectedResponceEntity);