loophp / mock-soapclient
一个假想的、可预测的SOAP客户端,非常适合用于单元测试。
1.2.2
2022-04-20 12:43 UTC
Requires
- php: >= 7.4
- ext-soap: *
Requires (Dev)
- ext-xdebug: *
- drupol/php-conventions: ^5
- friends-of-phpspec/phpspec-code-coverage: ^6
- infection/infection: ^0.24.0
- infection/phpspec-adapter: ^0.1
- phpspec/phpspec: ^7
- vimeo/psalm: ^4
This package is auto-updated.
Last update: 2024-08-28 02:03:22 UTC
README
Mock SOAP客户端
一个假想的、可预测的SOAP客户端 ;-)
这个库允许您配置SOAP客户端及其返回的响应。
不发送任何真实的SOAP请求,这个库的唯一目的是用于测试。
安装
composer require loophp/mock-soapclient --dev
用法
使用响应数组
<?php include __DIR__ . '/vendor/autoload.php'; use loophp\MockSoapClient\MockSoapClient; $responses = ['a', 'b', 'c']; $client = new MockSoapClient($responses); $client->foo(); // a $client->bar(); // b $client->w00t(); // c $client->foobar(); // a $client->barfoo(); // b $client->plop(); // c
或使用闭包
<?php include __DIR__ . '/vendor/autoload.php'; use loophp\MockSoapClient\MockSoapClient; $responses = static function ($method, $arguments) { return $method; }; $client = new MockSoapClient($responses); $client->foo(); // foo $client->bar(); // bar $client->w00t(); // w00t $client->foobar(); // foobar $client->barfoo(); // barfoo $client->plop(); // plop
<?php declare(strict_types=1); include __DIR__ . '/vendor/autoload.php'; use loophp\MockSoapClient\MockSoapClient; $responses = static function ($method, $arguments) { switch ($method) { case 'foo': return 'foo_method'; case 'bar': return 'bar_method'; } throw new SoapFault('Server', sprintf('Unknown SOAP method "%s"', $method)); }; $client = new MockSoapClient($responses); $client->foo(); // foo_method $client->__soapCall('foo', []); // foo_method $client->bar(); // bar_method $client->__soapCall('bar', []); // bar_method $client->w00t(); // Throws exception SoapFault. $client->__soapCall('w00t', []); // Throws exception SoapFault.
或使用多个闭包
<?php include __DIR__ . '/vendor/autoload.php'; use loophp\MockSoapClient\MockSoapClient; $responses = [ static function (string $method, array $arguments) { return '00' . $method; }, static function (string $method, array $arguments) { return '11' . $method; }, static function (string $method, array $arguments) { throw new SoapFault('Server', 'Server'); }, ]; $client = new MockSoapClient($responses); $client->foo(); // 00foo $client->bar(); // 11bar $client->w00t(); // SoapFault exception.
高级响应工厂
<?php declare(strict_types=1); include __DIR__ . '/vendor/autoload.php'; use loophp\MockSoapClient\MockSoapClient; $responses = [ 'a', 'b', 'c', 'a' => 'aaa', 'b' => [ 'bbb1', 'bbb2', ], 'c' => [ static function ($method, $arguments) { return 'ccc1'; }, static function ($method, $arguments) { return 'ccc2'; }, ], ]; $client = new MockSoapClient($responses); $client->foo(); // a $client->foo(); // b $client->foo(); // c $client->foo(); // a $client->a(); // aaa $client->a(); // aaa $client->b(); // bbb1 $client->b(); // bbb2 $client->b(); // bbb1 $client->c(); // ccc1 $client->c(); // ccc2 $client->c(); // ccc1
代码质量、测试和基准
每次将更改引入到库中时,Github都会运行测试和基准测试。
该库使用PHPSpec编写了测试。您可以在spec
目录中自由查看它们。运行composer phpspec
以触发测试。
在每次提交之前,使用GrumPHP执行一些检查,运行./vendor/bin/grumphp run
以手动检查。
PHPInfection用于确保您的代码得到了适当的测试,运行composer infection
来测试您的代码。
贡献
欢迎通过发送拉取请求来贡献。我们通常是一个非常响应的团队,我们将从始至终帮助您完成拉取请求。
由于某些原因,如果您不能为代码做出贡献,但愿意帮助,赞助是一个好、合理且安全的方式,以向我们表达对我们在这个包上投入时间的感激之情。
在[GitHub][github sponsors]上赞助我,以及贡献者中的任何一个。
变更日志
请参阅CHANGELOG.md以获取基于git提交的变更日志。
有关更详细的变更日志,请检查发布变更日志。