首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理提供者服务状态和使用模拟或实际数据库运行实际提供程序

处理提供者服务状态和使用模拟或实际数据库运行实际提供程序
EN

Stack Overflow用户
提问于 2021-10-28 05:09:17
回答 2查看 490关注 0票数 1

我是新的PACT,并试图使用pact-net的合同测试的.net微服务。我理解消费者测试的概念,它生成一个pact文件。有一个提供者状态中间件的概念,它负责确保提供者的状态与生成的pact中的给定()条件相匹配。我对以下几点或如何做到这一点感到有点困惑:

提供程序测试是针对实际服务运行的。因此,我们在运行测试之前启动提供者服务。我的提供程序服务与数据库交互以存储和检索记录。PACT还提到,应该对服务的所有依赖项进行删节。

  1. ,因此我们运行针对实际db?
  2. 运行的实际提供程序api,如果我们针对实际db运行该api,如何将数据注入数据库?我们应该使用提供者api自己的端点来添加给定的()数据吗?如果上面的方法不是正确的,那么
  3. 是什么?

我遇到的所有基本博客文章都没有解释这一点,而且通常都有没有提供程序状态或状态的示例,它们只是文件系统上的一些文本文件。

帮助感激。

EN

回答 2

Stack Overflow用户

发布于 2021-11-04 14:33:49

我要补充马特的评论,你有三种选择:

  1. 使用连接的环境进行提供程序测试,但之后必须手动进行一些清理,并确保数据库或/和外部API总是可用的。编写简单,但维护起来非常困难。

  1. 您嘲笑API调用,但调用真正的数据库。

  1. 您嘲笑所有外部依赖项: API和DB调用.

对于2)或3),您必须拥有测试路由,并将提供者状态中间件注入到提供程序测试夹具中。然后,您可以将提供程序状态配置为生成内存中的数据(如果是解决方案3),或者在解决方案2中添加一些数据init)。

您可以在这里找到一个例子:https://github.com/pact-foundation/pact-net/tree/master/Samples/EventApi/Provider.Api.Web.Tests

票数 2
EN

Stack Overflow用户

发布于 2021-10-29 00:52:00

提供者测试是针对实际服务运行的。

您是指针对活动环境,还是针对单元测试在本地运行的实际服务(由于上文(2)的原因,不建议使用前者)。

  1. ,这是该规则的例外之一。您可以选择使用真正的DB或内存中的DB-任何最方便的。在测试过程中通常会使用码头和类似的工具。

在您的示例中,

  1. 将有一组特定的只测试路由,这些路由响应提供者状态处理程序端点,还可以访问存储库代码并可以操作系统的状态。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69748571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档