dbt/client-fake

轻松伪造Laravel的HTTP客户端

2.0.0 2023-03-29 16:17 UTC

This package is auto-updated.

Last update: 2024-09-03 19:35:40 UTC


README

此包提供了一种简单的方法,在测试环境中伪造需要Laravel HTTP客户端的服务调用。如果你使用的是HTTP Facade,此包并不适合你。

只需扩展或直接构造ClientFake,注册你的伪造,然后提交或调用结果。当你的服务从容器中解析HTTP客户端时,它将只使用该HTTP客户端实例的伪造。

例如,如果你有FooServiceBarService,如果你为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)。有关更多信息,请参阅许可证文件