MvcResult的状态为200,包括响应内容,但断言失败。
MvcResult的状态为200,包括响应内容,但断言失败。
我目前正在为应用程序中的控制器编写一个JUnit测试用例,该控制器返回一个对象(URL)。我正在尝试断言预期的URL和实际的URL是否相同。当我检查MvcResult结果时,有两件事发生:\n
- \n
- mockResponse的状态码为200。
- 在ModelAndView中,模型确实有预期的url值,但是当我尝试使用
result.getResponse().getContentAsString()
断言结果时,断言失败,因为结果为空。
\n
\n
\n我已经尝试过的:\n
- \n
- 在调试过程中,我看到控制权转移到了服务上,这意味着值被正确模拟,并且预期的URL在结果中返回(因为在检查ModelAndView时存在)。
- 我尝试将预期的URL作为JSON对象给出,使用对象映射器来读取它,然后尝试使用JSONAssert,但结果仍然为空。
\n
\n
\n我的控制器类如下:\n
@Controller @RequestMapping("/student") public class StudentCacheController { @Autowired StudentCacheService studentCacheService; @GetMapping(path = "/{studentId}/scores",produces = MediaType.APPLICATION_JSON_VALUE) public StudentUrl getScores(@PathVariable String studentId, @RequestHeader(value = "subject", required = true) String subject) throws Exception { return studentCacheService.getStudentUrl(studentId, subject); } }
\n响应如下:\n
MockHttpServletResponse: Status = 200 Error message = null Forwarded URL = student/123/scores Included URL = [] ModelAndView: model = ModelMap key = studentUrl value = StudentUrl url = "cacheurl"
\n我收到了这个错误:org.junit.ComparisonFailure: expected:<[cacheurl]> but was:<[]>
\n如果有帮助,感谢!谢谢!