meare / juggler
此软件包已被废弃,不再维护。没有建议替代软件包。
Mountebank 的 PHP 客户端
v1.0
2017-01-17 22:10 UTC
Requires
- php: >=5.5
- guzzlehttp/guzzle: ^6
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^4.0
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
README
Juggler 是 mountebank 的 PHP 客户端,mountebank 是一种开源工具,可以在网络上提供测试替身。Juggler 允许您
- 与 mountebank API 交互;
- 验证模拟;
- 修改和构建冒充者;
目前只支持 HTTP 冒充者。
还有一个可用的 Codeception 模块。
安装
通过 Composer
$ composer require meare/juggler:~1.0
用法
API 交互
Juggler 使与 mountebank API 交互变得简单
use Meare\Juggler\Juggler; $juggler = new Juggler('localhost'); // Delete active imposters before posting to avoid resource conflicts $juggler->deleteImposters(); $port = $juggler->postImposterFromFile(__DIR__ . '/contract.json'); // Retrieve imposter contract and save it to file $juggler->retrieveAndSaveContract($port, __DIR__ . '/retrieved_contract.json'); $juggler->deleteImposter($port);
模拟验证
mountebank 记录了如果设置 --mock
命令行标志,冒充者收到的每个请求。
以下是使用 Juggler 验证模拟的方法
use Meare\Juggler\Juggler; $juggler = new Juggler('localhost'); // Post imposter $port = $juggler->postImposterFromFile(__DIR__ . '/contract.json'); // Do some requests file_get_contents('http://mountebank:4545/foo?bar=1'); file_get_contents('http://mountebank:4545/foo?bar=2&zar=3'); // Retrieve imposter and verify it received requests $imposter = $juggler->getHttpImposter($port); $imposter->hasRequestsByCriteria([ 'method' => 'GET', 'path' => '/foo', 'query' => ['bar' => 1], ]); // Will return true
修改冒充者
想象一下,您有一个为 GET /account/3
返回账户余额的存根
{ "port": 4545, "protocol": "http", "stubs": [ { "responses": [ { "is": { "statusCode": 200, "body": { "clientId": 3, "name": "Dmitar Ekundayo", "balance": 24.5 }, "_mode": "text" } } ], "predicates": [ { "equals": { "method": "GET", "path": "/client/3" } } ] } ] }
在某个时刻,您可能不希望为模拟负余额创建单独的存根。修改冒充者就可以做到这一点
use Meare\Juggler\Juggler; $juggler = new Juggler('localhost'); $port = $juggler->postImposterFromFile(__DIR__ . '/contract.json'); // Find stub by predicates and alter response $imposter = $juggler->getHttpImposter($port); $imposter->findStubByPredicates([['equals' => ['method' => 'GET', 'path' => '/account/3']]]) ->getIsResponse() ->modifyBody(function (array $body) { $body['balance'] = -5.75; return $body; }); // Delete imposter and post again $juggler->replaceImposter($imposter);
构建冒充者
use Meare\Juggler\Imposter\HttpImposter; use Meare\Juggler\Imposter\Stub\Predicate\Predicate; use Meare\Juggler\Imposter\Stub\Response\IsResponse; use Meare\Juggler\Juggler; $juggler = new Juggler('localhost'); // Create imposter with a stub for GET /test-endpoint $imposter = new HttpImposter; $imposter->createStub( [new IsResponse(200, ['Content-type' => 'application/json'], '{"status":200}')], [new Predicate(Predicate::OPERATOR_EQUALS, ['method' => 'GET', 'path' => '/test-endpoint'])] ); // Post it! $juggler->postImposter($imposter);
测试
$ composer test
致谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。