【问题标题】:How to have tests distributed across classes at provider end for same consumer如何在提供者端为同一消费者跨类分发测试
【发布时间】:2017-01-25 03:49:01
【问题描述】:

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

在提供者测试方面,我希望为 3 个功能提供 3 个类的相同结构。但是,如果我这样做了,并且当我从 1st class 运行测试时,PACT 还会尝试根据 pact 文件搜索其他方法,并且找不到其他方法的 cos 失败。我该如何处理这种情况。

示例:
ConsumerTestClass1
ConsumerTestClass2
ConsumerTestClass3

全部定义以下协议
@Pact(provider = PROVIDER, consumer = CONSUMER)
公共 MessagePact createPactForCareerLevelClassifier(MessagePactBuilder 构建器) {}

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

在提供者方面,我有 3 个测试类
提供者TestClass1
提供者TestClass2
提供者TestClass3

ProviderTestClass1 具有使用 @PactVerifyProvider
注释的实际测试 现在,当我为 ProviderTestClass1 运行测试时,PACT 抱怨它无法找到与其他 6 个实际在 ProvdiderTestClass2 和 ProvdiderTestClass3 类中的合同匹配的方法

【问题讨论】:

  • 在我看来,您正在尝试同时运行所有契约交互,而不是只运行特定测试所需的交互。如果您可以提供更多信息或可能提供代码示例/图表,它将帮助我弄清楚您要完成的工作。
  • 我加了一个例子,看看有没有帮助

标签: pact pact-java


【解决方案1】:

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

你应该参考this example,在那里你可以清楚地看到状态是通过像@PactVerifyProvider('an order confirmation message')这样的参数设置的,它只会验证相同描述的Pact交互。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多