gpt4 book ai didi

testing - 契约消费者测试是否仅用于生成契约json文件?

转载 作者:行者123 更新时间:2023-11-28 20:22:05 28 4
gpt4 key购买 nike

pact consumer test是否生成合约json文件?

我正在学习 pact 并且对消费者测试的目的感到好奇?它测试测试类定义的响应。

在我下面的代码中。我用 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);
}
}

最佳答案

简短回答 - 否。

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

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

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

关于testing - 契约消费者测试是否仅用于生成契约json文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50248129/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com