Тестирование Laravel Passport

У меня есть проблема — я использую Laravel Passport для моего API. Мне нужно написать тесты. Всякий раз, когда я использую WithoutMiddleware черта в моих тестах отключает Implicit route model binding особенность, которой я пользуюсь. Всякий раз, когда я не использую эту черту, мне нужно проходить проверку подлинности непосредственно из моего теста. Для этого мне нужно создать токен API через Passport.

Паспорт, однако, должен быть установлен до тестирования через artisan passport:installпотому что мои тесты используют DatabaseTransactions а также DatabaseMigrations черты. Когда я делаю это, тесты занимают огромное количество времени, и я чувствую, что это неправильный путь. Разве нет способа отключить только auth промежуточное программное обеспечение? Или какие-то другие идеи по этому поводу?

5

Решение

Немного опоздал на вечеринку, но в соответствии с этим вопрос эта функция в настоящее время не поддерживается, и в ближайшее время не планируется ее изменение.

Однако все тестовые классы Laravel наследуют withoutMiddleware метод, который вы можете использовать для отключить промежуточное ПО для определенных методов. Не уверен, что это полезно для вас, но просто добавлю это:

public function testBasicExample()
{
$this->withoutMiddleware();

$this->visit('/')
->see('Laravel 5');
}

Вы также можете проверить, выполняются ли тесты в самом промежуточном программном обеспечении, вызвав runningUnitTests() метод на экземпляре приложения.

1

Другие решения

На данный момент самый простой способ проверить API-маршруты, защищенные паспортом

Passport::actingAs(
factory(User::class)->create(),
['create-servers']
);

Паспортное тестирование на документах Laravel

0

По вопросам рекламы [email protected]