Laravel промежуточное программное обеспечение не вызывается в функциональном тесте - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть новое промежуточное программное обеспечение, которое работает, как и ожидалось, в браузере. Тем не менее, когда я пытаюсь запустить промежуточное программное обеспечение с помощью функционального теста, handle() никогда не вызывается.

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

# Kernel.php

    protected $middlewareGroups = [
        'web' => [
            MyMiddleware::class,
            ...
# MyMiddleware.php

    public function handle($request, Closure $next)
    {
        dd('I can see this in the browser, but not in the Feature test. Doing some 302 magic here.');
# Feature Test
    /**
     * @test
     * @return void
     */
    public function my_new_test(): void
    {
        $this->get('/test')
            ->assertStatus(302)
            ->assertRedirect($vanityDomain->getFallbackRedirectUrl('/non-matching-path'));
    }

1 Ответ

0 голосов
/ 06 апреля 2020

это работает для меня, не уверен, почему у вас не работает. middleware

class MyMiddleware
{
    public function handle($request, Closure $next)
    {
        if ('test' === $request->path()) {
            return redirect('/test1');
        }

        return $next($request);
    }
}

feature test

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     */
    public function testBasicTest()
    {
        $this->get('/test')->assertStatus(302)->assertRedirect('test1');
    }
}

Кстати, единичные и функциональные тесты - всего лишь способ группировки ваших тестов. Неважно, куда вы положили, они все ведут себя одинаково.

...