У меня есть проблема — я использую Laravel Passport для моего API. Мне нужно написать тесты. Всякий раз, когда я использую WithoutMiddleware
черта в моих тестах отключает Implicit route model binding
особенность, которой я пользуюсь. Всякий раз, когда я не использую эту черту, мне нужно проходить проверку подлинности непосредственно из моего теста. Для этого мне нужно создать токен API через Passport.
Паспорт, однако, должен быть установлен до тестирования через artisan passport:install
потому что мои тесты используют DatabaseTransactions
а также DatabaseMigrations
черты. Когда я делаю это, тесты занимают огромное количество времени, и я чувствую, что это неправильный путь. Разве нет способа отключить только auth
промежуточное программное обеспечение? Или какие-то другие идеи по этому поводу?
Немного опоздал на вечеринку, но в соответствии с этим вопрос эта функция в настоящее время не поддерживается, и в ближайшее время не планируется ее изменение.
Однако все тестовые классы Laravel наследуют withoutMiddleware
метод, который вы можете использовать для отключить промежуточное ПО для определенных методов. Не уверен, что это полезно для вас, но просто добавлю это:
public function testBasicExample()
{
$this->withoutMiddleware();
$this->visit('/')
->see('Laravel 5');
}
Вы также можете проверить, выполняются ли тесты в самом промежуточном программном обеспечении, вызвав runningUnitTests()
метод на экземпляре приложения.
На данный момент самый простой способ проверить API-маршруты, защищенные паспортом
Passport::actingAs(
factory(User::class)->create(),
['create-servers']
);