Ожидаемый код состояния 200, но получен 302. Не удалось подтвердить, что значение false равно true. используя тест phpunit в laravel 5.4 - PullRequest
0 голосов
/ 24 апреля 2020

Привет, у меня есть эта страница, которая является / dno-personal / cebu-properties. Я попытался запустить с помощью теста PHPUNIT в моем laravel. Теперь я создал этот тестовый файл ниже

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Http\Response;


class DnoPersonalTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @test
     */
    public function add_cebu_properties_page()
    {


        $response = $this->get('/dno-personal/cebu-properties');
        $response->assertStatus(200);

    }
}

Теперь в моем файле маршрута ii еще не создан маршрут для dno-personal / cebu-properties, который я запускаю test в своем phpunit, он выдает ошибку

Expected status code 200 but received 404.
Failed asserting that false is true.

C:\xampp\htdocs\dnogroup\vendor\laravel\framework\src\Illuminate\Foundation\Testing\TestResponse.php:79
C:\xampp\htdocs\dnogroup\tests\Feature\DnoPersonalTest.php:24

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

, что я думаю, хорошо, потому что у меня еще нет маршрута, который выдает ошибку 404. Теперь, когда я добавляю в маршрут

Route::get('/dno-personal/cebu-properties',
        'DnoPersonalController@cebuProperties')
        ->name('dno-personal.cebuProperties');

без метода в моем контроллере cebuProperties, когда я запустить тест PHPUNIT, он выдает

Expected status code 200 but received 302.
Failed asserting that false is true.

C:\xampp\htdocs\dnogroup\vendor\laravel\framework\src\Illuminate\Foundation\Testing\TestResponse.php:79
C:\xampp\htdocs\dnogroup\tests\Feature\DnoPersonalTest.php:24

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

, он выдает ошибку 302. Теперь я хочу, чтобы он выдает метод, еще не созданный вместо 302. Теперь, когда я добавляю $this->withoutExceptionHandling();, это выдает мне ошибку

PHP Fatal error:  Call to undefined method Tests\Feature\DnoPersonalTest::withoutExceptionHandling() in C:\xampp\htdocs\dnogroup\tests\Feature\DnoPersonalTest.php on line 22

In DnoPersonalTest.php line 22:

  Call to undefined method Tests\Feature\DnoPersonalTest::withoutExceptionHandling()



Fatal error: Call to undefined method Tests\Feature\DnoPersonalTest::withoutExceptionHandling() in C:\xampp\htdocs\dnogroup\tests\Feature\DnoPersonalTest.php on line 22

он не может видеть $this->withoutExceptionHandling();, может кто-нибудь помочь мне понять это? Любая помощь очень ценится. ТИА

1 Ответ

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

Проблема заключается в том, что в вашем маршруте применяется промежуточное ПО auth, что означает, что запрос перенаправляется на страницу входа в систему еще до того, как он достигнет вашего маршрута.

Вам потребуется создать и аутентифицировать пользователя для тестирования этот маршрут правильно, Laravel имеет actingAs помощник для этого.

Из документов :

Конечно, одно общее использование сеанса для поддержания состояния для аутентифицированного пользователя. Вспомогательный метод actAs предоставляет простой способ аутентификации данного пользователя в качестве текущего пользователя. Например, мы можем использовать фабрику моделей для генерации и аутентификации пользователя:

<?php

use App\User;

class ExampleTest extends TestCase
{
    public function testApplication()
    {
        $user = factory(User::class)->create();

        $response = $this->actingAs($user)
                         ->withSession(['foo' => 'bar'])
                         ->get('/');
    }
}
...