Метод withoutMiddleware
Метод withoutMiddleware применяется к экземпляру HTTP-клиента
в тестах Laravel и позволяет отключить выполнение глобальных
или именованных посредников (middleware) для текущего запроса.
Он полезен при тестировании контроллеров, когда необходимо
изолированно проверить логику без влияния посредников
аутентификации, CSRF-защиты или других проверок.
Метод принимает первым параметром массив или строку с именами
посредников, которые нужно отключить. Если параметр не указан,
отключаются все посредники.
Синтаксис
<?php
$this->withoutMiddleware();
$this->withoutMiddleware($middleware);
?>
Пример
Давайте отключим все посредники при тестировании маршрута с аутентификацией:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ArticleTest extends TestCase
{
public function test_article_index_without_middleware()
{
$this->withoutMiddleware();
$res = $this->get('/articles');
$res->assertStatus(200);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Давайте отключим только CSRF-посредник для тестирования POST-запроса:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ArticleTest extends TestCase
{
public function test_article_store_without_csrf()
{
$this->withoutMiddleware('App\Http\Middleware\VerifyCsrfToken');
$data = ['title' => 'Test article', 'content' => 'Test content'];
$res = $this->post('/articles', $data);
$res->assertStatus(201);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Давайте отключим несколько посредников одновременно:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ArticleTest extends TestCase
{
public function test_article_update_without_middlewares()
{
$this->withoutMiddleware([
'App\Http\Middleware\VerifyCsrfToken',
'App\Http\Middleware\Authenticate',
]);
$data = ['title' => 'Updated article', 'content' => 'Updated content'];
$res = $this->put('/articles/1', $data);
$res->assertStatus(200);
}
}
?>
Результат выполнения кода:
"Test passed"
Смотрите также
-
метод
withoutExceptionHandling,
который отключает обработку исключений в тестах -
метод
withHeaders,
который добавляет заголовки к запросу -
метод
actingAs,
который выполняет аутентификацию пользователя -
метод
get,
который выполняет GET-запрос в тестах