如何在pact PHP中为一个交互提供一些端点?

问题描述 投票:0回答:1

想象一下,我有一个真实的客户端要在消费者单元测试中使用,而该客户端正在后台发出两个请求。

赞:

$service = new \TestClient($config->getBaseUri());
$serviceResponse = $service->getUserDataById(1);

[getUserDataById方法正在返回提供者两个调用,然后返回用户数据

GET  someprovider/v1/username/{id}
GET  someprovider/v1/email/{id}

并且如果我想在单元测试中使用此客户端,则需要模拟两个端点

如何在一次互动中做到这一点?带有一个消费者响应的示例https://github.com/mattermack/pact-php-example/blob/master/example-one/test/ExampleOneMeetupAPIClientTest.php

php pact
1个回答
0
投票

您可以尝试在1个单元测试中注册两个交互例如:

$interaction1 = new InteractionBuilder(config);
$interaction2 = new InteractionBuilder(config);
$consumreRequest1 = new ConsumerRequest()
$consumreRequest1
   ->setPath('someprovider/v1/username/{id}');
$providerResponse1 = new ProviderResponse();
$providerResponse1
     ->setBody(//body here)

$interaction1
    ->uponReceiving('request to /someprovider/v1/username/{id{')
    ->with($consumerRequest1)
    ->willRespondWith($providerResponse1);

与第二次互动相同

然后您可以致电

$service = new \TestClient($config->getBaseUri());
$serviceResponse = $service->getUserDataById(1);

它将同时击中两个端点并触发两个交互。至少是我在测试中所做的]

© www.soinside.com 2019 - 2024. All rights reserved.