这个问题在问题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/