【问题标题】:Is pact consumer test for generating contract json files only?协议消费者测试是否仅用于生成合同 json 文件?
【发布时间】:2018-08-23 04:04:43
【问题描述】:

契约消费者是否测试生成合约 json 文件?

我正在研究协议并且对消费者测试的目的感到好奇?它测试测试类定义的响应。

在我下面的代码中。我用 200 和简单的正文定义了一个响应,然后通过 mockProvider 调用测试它。似乎没用。有人请给我一些指导。

public class PactTest {

  @Rule
  public PactProviderRuleMk2 mockProvider
        = new PactProviderRuleMk2("test-provider", "localhost", 8017, this);


  @Pact(consumer = "test-consumer")
  public RequestResponsePact createPact(PactDslWithProvider builder){
    Map<String, String> headers = new HashMap<>();

    return builder
            .given("test Get")
                .uponReceiving("GET REQUEST")
                .path("/pact")
                .method("GET")
            .willRespondWith()
                .status(200)
                .headers(headers)
                .body("{\"condition\": true, \"name\":\"tom\"}")
            .toPact();
  }

  @Test
  @PactVerification
  public void givenGet_whenSendRequest_shouldReturn200withProperHeaderAndBody() {
    ResponseEntity<String> res = new RestTemplate()
                                        .getForEntity(mockProvider.getUrl()+"/pact", String.class);

    assertThat(res.getStatusCode().value()).isEqualTo(200);
  }
}

【问题讨论】:

    标签: testing microservices pact


    【解决方案1】:

    简短的回答 - 不。

    独立于您的实际消费者代码在测试中调用模拟 API 是毫无价值的(正如您所暗示的那样),因为它是一个自我实现的预言。 Pact 旨在测试 Consumer 端的协作服务;调用 Provider 的适配器代码。

    通常,此调用将通过诸如数据访问层和其他中间层之类的东西。您的 Pact 测试将使用使用这些的服务,其好处是通过此过程定义合同,保证与消费者需求保持同步,因为它是通过您的代码生成的。

    我们今天刚刚更新了docs,也许这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      相关资源
      最近更新 更多