用于生成合同json文件的pact使用者测试吗?
我正在研究协议并且对于什么是消费者测试有所了解?它测试测试类定义的响应。
在我的代码中。我用200和简单的body定义了一个响应,然后通过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);
}
}
答案 0 :(得分:2)
简短回答 - 不。
在测试中调用模拟API独立于您的实际消费者代码是没有价值的(正如您所暗示的那样),因为它是一个自我实现的预言。 Pact旨在测试消费者方面的协作服务;调用Provider的适配器代码。
通常,此调用将通过数据访问层和其他中间件之类的内容。您的契约测试将使用使用这些的服务,其好处是合同通过此流程定义,保证与消费者需求保持同步,因为它是通过您的代码生成的。
我们今天刚刚更新了docs,也许这有帮助。