Let’s say you have subdomain routing in Laravel. Here’s how you can test the routes using Pest.
Assign each subdomain using beforeEach()
hook and organize them into separate directories.
pest()->beforeEach(function () {
URL::useOrigin('http://'.config('app.hosts.account'));
})->in('Feature/Domains/Account');
pest()->beforeEach(function () {
URL::useOrigin('http://'.config('app.hosts.admin'));
})->in('Feature/Domains/Admin');
pest()->beforeEach(function () {
URL::useOrigin('http://'.config('app.hosts.app'));
})->in('Feature/Domains/App');
Then, test it as usual.
it('returns a successful response for /inquiries on app.hosts.account', function () {
/** @var \Illuminate\Testing\TestResponse $response */
$response = $this->get('/inquiries');
$response->assertOk()
->assertViewIs('app.inquiry');
});
If you’re curious about my .env
, here it is:
ADMIN_HOST=admin.localhost
ACCOUNT_HOST=account.localhost
APP_HOST=app.localhost
And in config/app.php
:
//...
'hosts' => [
'admin' => env('ADMIN_HOST', 'admin.localhost'),
'account' => env('ACCOUNT_HOST', 'account.localhost'),
'app' => env('APP_HOST', 'app.localhost'),
],