Laravel Http::fake ConnectionException

问题描述 投票:0回答:1

如何测试连接失败时http宏重试次数?

应用服务提供商:

Http::macro('host', function () {
            return Http::acceptJson()
                ->retry(5, 600, function (\Exception $exception, PendingRequest $request) {
                    return $exception instanceof ConnectionException;
                });
        });

功能测试:

public function test_connection_exception(): void
{
    Http::preventStrayRequests();

    Http::fake([
        '*' => // I need something here...
    ]);

    Http::assertSentCount(5);
}
laravel phpunit laravel-http-client
1个回答
0
投票

在测试中,您可以使用

Http::fake
来模拟所有请求的连接异常。您可以通过从抛出
Http::fake
ConnectionException
方法返回一个闭包来完成此操作。以下是修改测试的方法:

public function test_connection_exception(): void
{
    Http::fake(function () {
        throw new \Illuminate\Http\Client\ConnectionException('Connection exception');
    });

    try {
        Http::host()->get('http://example.com');
    } catch (\Exception $e) {
        // Handle the exception
    }

    Http::assertSentCount(5);
}

在此代码中,

Http::fake(function () { throw new \Illuminate\Http\Client\ConnectionException('Connection exception'); });
模拟所有HTTP请求的连接异常。然后,
Http::host()->get('http://example.com');
发送 GET 请求,该请求将因连接异常而失败。最后,
Http::assertSentCount(5);
断言请求已发送 5 次,这是您在
host
宏中指定的重试次数。

© www.soinside.com 2019 - 2024. All rights reserved.