Я пытаюсь написать тесты для проверки точки API на унаследованном приложении, над которым я работал в течение некоторого времени.
Мой маршрут защищен фильтром auth
.
routes.php
$route->post('protected/route', ['before' => 'auth', 'uses' => 'ProtectedController@someProtectedTask']);
ProtectedControllerTest.php
public function testSomeProtectedTask {
$routePayload = [...];
$response = $this->call('POST', 'protected/route', [], [], [], $routePayload)
$this->assertResponseOk();
}
Ответ, который я получаю: «Код ожидаемого состояния 200, получен 401» (не авторизован).
Я пытался добавить
$this->app->forgetMiddleware('auth');
Методы с
по setUp
и testSomeProtectedTask
без особого успеха. Предполагается, что фильтры отключаются при тестировании Laravel, но я не уверен в этом и не могу найти, как их точно отключить.
Изменить:
Позже я обнаружил, что моя среда была установлена на 'production'
, а не 'testing'
из-за неправильной конфигурации тестов, но вопрос все еще действителен, так как мне нужно также протестировать фильтр 'auth'
.
Тесты можно включить, добавив Route::enableFilters()
.
Подробнее об этой теме .
Вопрос:
Кто-нибудь знает, как отключить фильтр auth
при тестировании, не комментируя его перед тестами? Или есть лучший способ проверить конечные точки API в Laravel 4.2 и каким-либо образом проверять подлинность?