当前位置: 首页 > 知识库问答 >
问题:

如何为同一使用者在提供者端跨类分布测试

司徒鸿文
2023-03-14

我有一个场景,其中我的提供者服务提供了3个功能。在消费者端,我有3个不同的类来为这3个功能编写测试。当生成pact文件时,它包含了具有相同的使用者-提供者组合的所有测试。到目前为止还不错。

示例:
ConsumerTestClass1
ConsumerTestClass2
ConsumerTestClass3

所有定义以下协议
@pact(provider=provider,consumer=consumer)
public MessagePact createPactForCareerLevelClassifier(MessagePactBuilder builder){}

现在假设每个类有3个测试方法,那么pact文件总共有9个

在提供程序端,我有3个测试类
ProviderTestClass1
ProviderTestClass2
ProviderTestClass3

ProviderTestClass1具有用@PactVerifyProvider
注释的实际测试。现在,当我为ProviderTestClass1运行测试时,PACT抱怨它找不到与ProvideTestClass2和ProvideTestClass3类中的其他6个约定匹配的任何方法

共有1个答案

潘银龙
2023-03-14

听起来您没有指定@pactVerifyProvider状态,因此它运行了所有这些状态。

您应该参考这个示例,在这个示例中,您可以清楚地看到状态是通过参数设置的,例如@PactVerifyProvider(anOrder confirmation Message'),它将只验证相同描述的协议交互。

 类似资料:
  • 确保最新的pact契约得到验证 使用最新的可用的pact契约访问地址。 不要依赖手动干预(例如,将文件复制到提供者项目中)。因为这个步骤将分解或中断验证过程,导致某些验证任务错误。 不要试图通过手动更新pact契约的方式来“保证”测试通过。 pact:verify是集成验证的金丝雀方式 - 而手动更新就像给金丝雀戴上防毒面具,失去了本来意义。 确保Pact测试作为CI构建的一部分它应该与所有其他测

  • 我们有两个服务,其中一个是另一个的消费者。使用者是用Java编写的,提供者是用JavaScript编写的。 在消费者端,我们使用pact-jvm定义了一个consumer-contract-test,并且能够生成一个合同。在此契约中,响应的定义如下: 用于pact验证的代码 有什么办法解决这个问题吗?是否可能在消费者端使用带有内容键的类似消息结构?或者我们可以在提供方用其他方法解决它吗

  • 随着@provides方法变得更加复杂,可以使用Provider接口将这些方法移动到单独的类中。 class SpellCheckerProvider implements Provider<SpellChecker> { @Override public SpellChecker get() { String dbUrl = "jdbc:mysql://localhost

  • The Ethereum eco-system provides many methods of interacting with the blockchain. In ethers.js we expose a Provider API that covers the breadth of operations, however often it is useful to inter-opera

  • 提供者(Provider) 是一个连接以太坊网络的抽象,用与查询以太坊网络状态或者发送更改状态的交易。 EtherscanProvider 和 InfuraProvider 提供连接公开的第三方节点服务提供商,无需自己运行任何以太坊节点。 JsonRpcProvider 和 IpcProvider 允许连接到我们控制或可以访问的以太坊节点(包括主网,测试网,权威证明(PoA)节点或Ganache)

  • 我有一个web服务,它接收对象,通过AMQP发送通知,并向请求者返回JSON响应。每个请求都是在一个线程上执行的,我正在尝试实现publisher confirms,我正在努力解决如何设置它。我有它的工作,但我不喜欢我这样做。 我这样做的方式是: 在邮件上添加一些标题 拥有一个包含2个订阅者的发布-订阅频道 订户1)创建一个阻塞队列,使其准备就绪,并通过amqp发送消息 订户2)开始在该队列上拉动