java - 单元测试 RestController 确实返回不在 ResponseEntity 内的强类型对象

标签 java spring unit-testing assert spring-restcontroller

我有以下 Controller 示例:

@RequestMapping(value = "/pickcard", method = RequestMethod.POST)
    public Card pickCard(@RequestParam String name) {
        return _deckManager.pickCardForPlayer(name);
    }

正如您所看到的,此端点返回一个未封装在响应实体中的卡,但我仍然想评估端点的结果是否成功,例如 200。 在我的单元测试中我不能这样说:

var response = deckController.pickCard("Test");
assertThat(response.getStatusCodeValue()).isEqualTo(200);

因为响应确实不是 ResponseEntity 类型。我该如何做这个断言?提前致谢!

最佳答案

正如@JBNizet 在评论中指出的:

“这里没有必要测试它。这是一个单元测试。它测试您的代码。Spring 保证响应状态将为 200。它已经过测试。如果您确实想测试响应,则需要集成测试,而不是单元测试。”

实际上,只有当有机会返回 200 以外的内容时,我才必须测试响应状态。在这种情况下,我将使用 ResponseEntity 作为 Controller 的返回类型,这将允许我对其进行测试。

关于java - 单元测试 RestController 确实返回不在 ResponseEntity 内的强类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59593999/

相关文章:

java - 为所有测试类设置自定义 TestExecutionListener,这样我就可以记录抛出的每个异常/断言的堆栈跟踪

java - Swing 中的重绘机制

java - 读取输入流时出错 : Software caused connection abort' in java server

java - 如何在 Spring JDBC 中启用 sql 查询控制台日志记录

java - 如何使用 Spring MySQL 和 RowCallbackHandler 管理大型数据集

python - 使用 Python unittest 测试回调调用的正确方法是什么?

java - 尝试获取 EJB 时出现 JBoss 4.2.3 NullPointerException

java - 如何恢复 Spring Boot 1.5 中的默认异常映射?

java - 使用 Spring JDBCTemplate 更新结果集

java - 如何测试仅调用存储库(dao)层的CRUD服务?