首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pact消费者测试是否仅用于生成合同json文件?

pact消费者测试是否仅用于生成合同json文件?
EN

Stack Overflow用户
提问于 2018-05-09 15:46:54
回答 1查看 587关注 0票数 1

pact consumer是否测试生成合同json文件?

我正在学习pact,并被问及消费者测试的目的是什么?它测试测试类定义的响应。

在我下面的代码中。我用200和简单的主体定义了一个响应,然后通过mockProvider调用来测试它。看起来没用。有谁能给我一些导游。

代码语言:javascript
复制
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);
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-09 18:42:35

简短的回答是--不。

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

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50248129

复制
相关文章

相似问题

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