Как получить поддомен внутри метода map () RouteServiceProvider при тестировании phpunit? - PullRequest
1 голос
/ 19 февраля 2020

Есть ли способ получить поддомен во время выполнения теста phpunit в Laravel?

И еще указать c в этом методе:

app / Providers / RouteServiceProvider. php

/**
 * Define the routes for the application.
 *
 * @return void
 */
public function map()
{
    $this->mapApiRoutes();
    $this->mapWebRoutes();

    // inside here get subdomain while running a phpunit test??

Итак, если я сделаю какой-нибудь фиктивный тест, подобный этому:

/** @test */
public function user_can_see_welcome_page()
{
    $response = $this->call('GET', 'https://subdomain.domain.com');

    $response->assertStatus(200);
}

Я хочу получить subdomain внутри этого метода map () RouteServiceProvider

1 Ответ

1 голос
/ 19 февраля 2020

Чтобы изменить домен, вы можете добавить его к phpunit.xml, чтобы установить его глобально:

<php>
    <env name="APP_URL" value="https://subdomain.domain.com"/>
</php>

Но, обсуждая вашу проблему в комментариях, это реальное решение вашей проблемы:

Несколько файлов маршрутов:

Вы можете разделить каждый поддомен в своем собственном методе карты и файле маршрута и зарегистрировать их в RouteServiceProvider.

для каждый поддомен:

protected function mapSubDomainRoutes()
{
    Route::group([
        'middleware' => 'web',
        'domain' => 'subdomain.domain.com',
        'namespace' => $this->namespace,
    ], function () {
        require base_path('routes/subdomain.domain.php');
    });
}

Один файл маршрута:

Или, если у вас есть все в одном файле маршрута, вы можете обернуть маршруты внутри группы:

Route::group(['domain' => ['subdomain.domain.com']], function () {
    // domain specific routes
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...