spring - 应该测试@RestController 或只是@Service
问题描述
我有一个具有 3 层的应用程序:控制器、服务和存储库。
我的控制器是一个休息(@RestController 在春天),它只使用 DTO 获取请求,转换为模型并传递给服务(@Service 在春天)。
我的服务具有所有业务逻辑,我的测试类仅基于服务类。
我的存储库只是一个 JpaRepository,有时使用带有 @Query 的自定义查询。
好吧,正如我所说,我只是为服务制作测试类,因为这是我的业务逻辑。我的问题是关于如何为控制器类创建测试,真的有必要吗?这是一个好习惯吗?
解决方案
当然这是必须的。我们必须测试应用程序的所有层,因为每一层或它们都提供特定的元素:服务-业务逻辑、存储库-数据访问、控制器-http 输入和输出。
对于每个端点,您可以测试它是否返回适当的状态代码、标头、正文等。此外,您还应该测试错误响应。考虑每个端点的所有可能性,200、201、4xx、5xx 案例。
推荐阅读
- python - UDP:带有simulink客户端OSError的python服务器:[Errno 48]地址已在python中使用
- android - 将包含 id 的字符串转换为 id 类型 Int
- google-apps-script - Google日历使用应用程序脚本在不影响其他事件的情况下连续更改其中一个事件的事件日期
- delphi - 通过 64 位 Delphi 发送 MIDI 控制消息
- c# - 将多个 JSON 属性名称映射到 System.Text.Json 中的同一属性
- javascript - 如何从节点模块的函数开头删除包名称
- python - 为什么 sklearn 中的 SGDRegressor 函数不能收敛到正确的最优值?
- android - Firebase 实时显示(其他)位置和应用版本
- artificial-intelligence - 如何使用嵌套字典进行广度优先搜索?
- python - 如果内部没有任何抽象方法,那么在 Python 中继承 ABC 类有什么意义吗?