当提供者的端点执行数据持久性时,执行合同测试的最佳方法是什么?
例如,客户的注册。我应该考虑回滚管道中的数据吗?
我根据每个特定代码库的模拟/不模拟的权衡做出决定。我在微服务上工作过,很容易回滚事务,所以我使用真实的数据库进行这些测试。正如 Fabricio 所建议的那样,我还研究过模拟存储库更有意义的系统。我总是模拟下游服务依赖。
考虑到客户端驱动的合同测试(通常)不应该是功能测试,我模拟了处理其余调用的提供程序资源下面的所有内容。因此,没有数据被持久化,它也大大简化了测试,因为你删除了对外部组件的任何依赖,包括数据库。
例如,如果您的ClientResource
(或ClientController
,取决于您的名称模式)调用 a ClientRepository
,ClientRepository
则将被嘲笑。