Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[11.x] Http client: record request when faking connection exception #53530

Conversation

gdebrauwer
Copy link
Contributor

I added support for faking a connection exception in a test (see #53485), but I noticed that the request was not being recorded. That means asserting how many requests were sent is currently not correct. This PR fixes that.

Http::fake(['https://laravel.com' => Http::failedConnection()]);

try {
    Http::get('https://laravel.com')
} catch (ConnectionException) {
}

Http::assertSentCount(1); // This would fail before this PR

@taylorotwell taylorotwell merged commit 4ba0b3f into laravel:11.x Nov 15, 2024
31 checks passed
@StSarc
Copy link
Contributor

StSarc commented Jan 2, 2025

@gdebrauwer We also need to handle $this->factory = null

                $this->factory?->recordRequestResponsePair($request, null);

$factory has been initialized as:

/**
     * The factory instance.
     *
     * @var \Illuminate\Http\Client\Factory|null
     */
    protected $factory;

$factory can be null.

In the buildRecorderHandler function, $this->factory = null is already handled.

return $promise->then(function ($response) use ($request, $options) {
                    $this->factory?->recordRequestResponsePair(
                        (new Request($request))->withData($options['laravel_data']),
                        $this->newResponse($response)
                    );

                    return $response;
                });

@taylorotwell tagging you just to ask if it's okay if I raise a PR for this. It's a minor change.

@gdebrauwer
Copy link
Contributor Author

@StSarc I'm not sure when the $factory property can be null 🤔 I would just create the PR with the minor change and see what Taylor thinks about it (I don't think he gets a notification on a comment in merged pr)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants