dbt / client-fake
轻松伪造Laravel的HTTP客户端
2.0.0
2023-03-29 16:17 UTC
Requires
- php: >=8.1
- fakerphp/faker: ^1.21
- guzzlehttp/guzzle: ^7.2
- illuminate/http: ^8.0|^9.0|^10.0
Requires (Dev)
- ext-pcov: *
- laravel/pint: ^1.0
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpunit/phpunit: ^9.5.10|^10.0
README
此包提供了一种简单的方法,在测试环境中伪造需要Laravel HTTP客户端的服务调用。如果你使用的是HTTP Facade,此包并不适合你。
只需扩展或直接构造ClientFake
,注册你的伪造,然后提交或调用结果。当你的服务从容器中解析HTTP客户端时,它将只使用该HTTP客户端实例的伪造。
例如,如果你有FooService
和BarService
,如果你为BarService
注册了一个伪造,伪造只应用于该服务,而不应用于其他任何服务。
当你只想伪造一个服务而不伪造其他服务时,这很有用。
安装
你可以通过composer安装此包
composer require dbt/client-fake --dev
使用方法
你可以直接使用ClientFake
类,也可以扩展它并定义自己的方法伪造。
如果你想直接使用ClientFake
,可以这样做(例如,在测试用例的主体中)
use Dbt\ClientFake\ClientFake; use Dbt\ClientFake\Options\Options; $clientFake = new ClientFake($app, new Options( service: MyService::class, base: 'https://my-service.com', // Or false if the API isn't versioned. version: 'v1', // Optional headers to add to all fake responses for use in testing. headers: ['X-My-Header' => 'some value'], )); $clientFake->fake('my/endpoint', ['data' => 'some data']); $clientFake->commit(); // or $clientFake();
然后你可以解析你的服务并像平常一样使用它
$service = resolve(MyService::class); $response = $service->callMyEndpoint(); $this->assertSame(['data' => 'some data'], $response->json()); $this->assertSame('some value', $response->header('X-My-Header'));
通配符
默认情况下,会添加一个通配符,对于任何未伪造的端点,将返回500响应。你可以禁用此功能
$clientFake->withoutCatchall();
条件启用
你可以使用enable
方法有条件地启用和禁用伪造
$clientFake->enable($booleanCondition);
你可以选择添加一个回调,该回调将从容器中解析并执行布尔条件为假时
$clientFake->enable($booleanCondition, function (SomeOtherService $service) { $service->doSomething(); });
选项
你可以直接使用ClientFakeOptions
对象,或者通过实现ClientFakeOptionsInterface
定义自己的。
等等
有关详细信息,请参阅CONTRIBUTING。MIT许可证(MIT)。有关更多信息,请参阅许可证文件。