Spring TEST REST Controller (消费/生成 JSON)- 无数据库,离线 - 使用 Mockito

标签 spring testing rest controller mockito

这个问题在问题I had asked here 的旁边.在这个问题中,我想重点介绍测试基于 Spring 的 REST Controller 的方法。

目前,我设置测试的方式是 - 使用 spring-test-mvc 框架和基本上执行端到端测试的数据库。

我想去掉一个数据库层。为什么?我真的需要数据库层吗?我不能模拟数据库吗?

所以,我想知道一种高效测试基于 Spring 的 REST Controller 的方法,该 Controller 包含 Mockito 等框架。

请分享并指导我正确的方向。

最佳答案

通常, Controller 只与服务交互。大多数 Controller /服务交互都是数据和/或状态编码。 (以及异常处理。)模拟/ stub ( stub ?) 服务层使我们能够确保 Controller 处理它与其服务之间可能发生的任何事情。

“完整且有保证”由您决定。例如,与 User 数据库交互的服务可能只会做几件事:检索用户、检索用户列表、更新用户或抛出特定于应用程序或框架的异常.从控制者的角度来看,这些是需要测试的东西——没有那么多东西,所以“完整性”是相当直截了当的。

这些都不会测试服务或 DAO。例如,服务可能会使用 “卡住” DAO 进行测试。 DAO 可能会使用内存中的 DB 进行测试(尽管老实说,我并不总是测试 DAO,除非它们具有重要的、开发人员生成的 SQL)。

这些都不能替代集成测试,集成测试可以测试路由、错误和异常条件处理、数据格式和内容等。

关于Spring TEST REST Controller (消费/生成 JSON)- 无数据库,离线 - 使用 Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165423/

相关文章:

java - @Autowired-ing DAO 时出现 ValidationException

java - 无法在 jar 中的 Maven 依赖项中找到要 Autowiring 的 bean,

java - 当我运行我的 spring 应用程序时,它显示抛出错误

ios - 为 stub 创建 RxSwift/Reactive 扩展的子类

wordpress - 是否可以在 WooCommerce API 订单端点中选择多个状态?

java - 使用 'OPE' =? 等语法时,字符串到数字的转换失败

python - 如何一次为多个实现运行 python unittests

internet-explorer - IE9中的IE7/8模式与实际运行的IE7/8相比有多好

javascript - QML/JS/REST 认证表单

json - JSON 格式是否适合自定义 HTTP header ?