narekps / codeception-wiremock-module
Codeception 的 WireMock 模块
1.0
2022-11-30 21:34 UTC
Requires
- php: >=8.0
- codeception/codeception: ^5.0.0
- wiremock-php/wiremock-php: ^2.35
This package is auto-updated.
Last update: 2024-09-29 06:14:59 UTC
README
这个 Codeception 扩展允许开发者和测试人员在使用 codeception 测试时使用 WireMock 模拟外部服务。
codeception-wiremock-extension 连接到已运行的 WireMock 实例,也可以自动运行一个本地独立实例。它还能够下载您偏好的 WireMock 版本并运行它。测试完成后,它将关闭连接并关闭 Wiremock 服务(如果它启动了的话)。
另请参阅
注意
如果您需要一个具有与 WireMock 类似功能且 100% 由 PHP 实现的应用程序,请尝试 Phiremock:Phiremock,它还有一个很好的 codeception 扩展。
安装
Composer
该项目已在 Packagist 上发布,因此您只需将其作为依赖项添加到 composer.json 中
$ composer require lamoda/codeception-wiremock-extension
配置示例
模块
此模块允许您连接到 WireMock 实例,它可以是扩展运行的实例或已运行的实例。
# acceptance.suite.yml modules: enabled: - WireMock: host: my.wiremock.host # defaults to 127.0.0.1 port: 80 # defaults to 8080
如何使用
准备您的应用程序
首先,配置您的应用程序,以便在测试时用 WireMock 替换其外部服务。例如,如果您向位于 http://your.rest.interface 的 REST 服务发送请求,请将配置中的该 URL 替换为 WireMock 运行的 URL,例如:https://:8080/rest_interface。
编写您的测试
// YourCest.php class YourCest extends \Codeception\TestCase\Test { public function _after(\AcceptanceTester $I) { $I->resetMappingsAndRequestJournalInWireMock(); } // tests public function tryToTest(\AcceptanceTester $I) { $I->expectRequestToWireMock( WireMock::get(WireMock::urlEqualTo('/some/url')) ->willReturn(WireMock::aResponse() ->withHeader('Content-Type', 'text/plain') ->withBody('Hello world!')) ); // Here you should execute your application in a way it requests wiremock. I do this directly to show it. $response = file_get_contents('https://:18080/some/url'); $I->assertEquals('Hello world!', $response); $I->receivedRequestInWireMock( WireMock::getRequestedFor(WireMock::urlEqualTo('/some/url')) ); } // Also, you can access wiremock-php library directly public function moreComplexTest() { $wiremockPhp = Codeception\Extension\WiremockConnection::get(); // Now you can use wiremock-php library } }