Laravel 7: заголовок запроса по умолчанию для модульного теста установлен в setUp () - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу установить свои заголовки для всех запросов в тесте в методе setUp вместо того, чтобы делать это для всех тестов отдельно.

Есть ли простой способ сделать это?

Пример:

$this->withHeaders([
            'Authorization' => 'Bearer ' . $response['data']['token'],
            'Accept' => 'application/json'
        ])

Кому:

setUp(){
$this->setHeaders([
            'Authorization' => 'Bearer ' . $response['data']['token'],
            'Accept' => 'application/json'
        ]);
}

1 Ответ

1 голос
/ 16 апреля 2020

Конечно. Вы можете создать промежуточный родительский класс TestCaseWithToken (или как вы хотите его назвать), который будет расширять PHPUnit\Framework\TestCase и добавить туда свой переопределенный метод

protected function setUp(): void 
{
   parent::setUp();
   // set your headers here
   $this->withHeaders([
            'Authorization' => 'Bearer ' . $this->getBearerToken(),
            'Accept' => 'application/json'
        ])

}

protected function getBearerToken()
{
   return '';
}

Дополнительно, если ваш токен изменится в переменной $response вы можете создать функцию, которая возвращает токен, чтобы вы могли легко переопределить метод в отдельных тестовых классах. Вы можете выбрать свойство класса и метод установки, которые будут работать одинаково.

Если вы хотите получить токен пользователя, которого хотите войти, это легко сделать. Просто заставьте метод getBearerToken вернуть что-то вроде auth('api')->login($this->authUser); (это будет goint для возврата фактического токена) и установите $authUser один раз для каждого тестового файла. Надеюсь, это поможет вам в правильном направлении.

...