Lean Admin is a Laravel package for building custom admin panels. It's based on the TALLstack (Livewire & Alpine) and its main focus is customizability. Start by defining resources with fields and then customize anything you want. Replace CRUD actions, modify field behavior, or tweak Blade views, and much more. Lean is launching soon, and you can join the the waiting list here to get a discount.

Faking HTTP requests in Laravel

Original – by Brent Roose – 2 minute read

Have you ever had to write an API integration from scratch? Where you're managing the HTTP calls yourself instead of being able to rely on third-party packages?

You might have used Guzzle to do so or, maybe better, Laravel's HTTP client.

If you're using the latter one, you'll be happy to know that the HTTP facade offers some great testing tools.

Imagine a repository class that can fetch RSS feeds from the web and parse them into a collection of structured data. Maybe something like this:

class RssRepository
{
    public function fetch(string $url)
    {
        $rss = Http::get($url)->body();

        return Rss::parse($rss)->map(
            fn (array $data)
                => RssEntry::fromArray($data)
        );
    }
}

Now, you definitely want to test whether your mapping logic works, but you don't want to send a real HTTP request every time you run your test. That's where the HTTP fake can help you:

Http::fake([
    'https://test.com/*'
        => Http::response($fakeRssBody),
]);

Notice the * wildcard in the URL? That's right! The HTTP fake is able to return different responses based on the URL and even supports wildcards! You could even choose to use one wildcard for all requests:

Http::fake([
    '*' => Http::response($fakeRssBody),
]);

There is a little more to tell about HTTP fakes, sequences for example; but we'll cover that in our Testing Laravel course.

Stay up to date with all things Laravel, PHP, and JavaScript.

Follow me on Twitter. I regularly tweet out programming tips, and what I myself have learned in ongoing projects.

Every two weeks I send out a newsletter containing lots of interesting stuff for the modern PHP developer.

Expect quick tips & tricks, interesting tutorials, opinions and packages. Because I work with Laravel every day there is an emphasis on that framework.

Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes.

Comments