【问题标题】:spring rest doc - service layer mockingspring rest doc - 服务层模拟
【发布时间】:2020-06-09 20:09:15
【问题描述】:
最近我看到博客文章说“出于文档目的,我们对服务层使用模拟(在使用spring rest doc的环境中)”,所以这篇文章使用spring的@MockBean这样的注释来服务层对象。
但我认为,如果我模拟服务层 -> spring rest doc 总是成功测试,因为模拟的服务对象总是返回预期的结果,而 spring rest doc 测试总是从模拟的服务对象接收相同的预期结果。
所以我认为这是不对的,但是,
我想知道什么更好,或者你如何将服务对象与 spring rest doc 一起使用
请回答
【问题讨论】:
标签:
spring
spring-boot
mocking
service-layer
spring-restdocs
【解决方案1】:
在使用 Spring REST Docs 时模拟服务层是否是一个好主意很大程度上取决于个人喜好。
模拟服务层的一个可能缺点是文档可能与服务的实际行为不同步。这会破坏 REST Docs 帮助您保持文档和服务同步的能力。
模拟服务层的一个优点是它可以更轻松地记录错误场景或需要大量设置的场景。在出现错误的情况下,我认为您最好在整个 API 中采用通用方法,并一致地使用标准 HTTP 错误代码。如果您这样做,记录服务中每个端点的错误响应的需要就会减少。
这样就需要记录需要大量设置的更复杂的场景。在这种情况下,有限地使用模拟可能是值得的,但我仍然希望在不依赖模拟的情况下生成尽可能多的文档。