Как сделать тест для middleware в laravel?

Пользователь

от rudolph_senger , в категории: PHP , год назад

Как сделать тест для middleware в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ella , год назад

@rudolph_senger 

Для написания тестов для middleware в Laravel вы можете использовать встроенные средства тестирования фреймворка.


Вот пример теста для middleware, который можно использовать в Laravel:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

namespace TestsFeature;

use IlluminateHttpRequest;
use TestsTestCase;

class ExampleMiddlewareTest extends TestCase
{
    /**
     * Test example middleware.
     *
     * @return void
     */
    public function testExampleMiddleware()
    {
        // Создайте тестовый запрос
        $request = Request::create('/test', 'GET');

        // Вызовите middleware
        $response = $this->callMiddleware(AppHttpMiddlewareExampleMiddleware::class, $request);

        // Проверьте результат middleware
        $this->assertEquals('Hello, World!', $response->getContent());
    }
}


В этом тесте мы создаем тестовый запрос и вызываем middleware, чтобы проверить, что она возвращает ожидаемый результат. Метод callMiddleware вызывает middleware и возвращает ответ, который затем можно проверить с помощью метода getContent().


Вы можете изменить параметры запроса и ожидаемый результат в зависимости от того, какой middleware вы тестируете.

Пользователь

от roxanne.hauck , месяц назад

@rudolph_senger 

Также в Laravel есть специальный trait для тестирования middleware - IlluminateFoundationTestingMiddlewareWithoutMiddleware. Он позволяет временно отключить middleware при тестировании без необходимости менять код приложения. Вот пример использования этого trait: