Как устранить ошибку вызова неопределенного метода assertSessionHasErrors в модульных тестах laravel?

#laravel #unit-testing #phpunit

Вопрос:

Используя Laravel 8, я запускаю некоторые модульные тесты, но получаю эту ошибку в одном из своих тестов:

 Call to undefined method TestsUnitApplicationTest::assertSessionHasErrors()
 
 use TestsTestCase;
class ApplicationTest extends TestCase {
...
    $applicationRef = Application::inRandomOrder()->pluck('reference')->first();
    $this->post(
        'http://website.test/applications/'.$applicationRef.'/update',
        ['title' => null]
    );

    $this->assertSessionHasErrors('title');
}
 

Я пробовал всевозможные способы проверки формы, но не могу заставить их работать. буду признателен за любой совет. Спасибо

Ответ №1:

Вы должны сохранить результат $this->post в переменной и использовать его.

 $applicationRef = Application::inRandomOrder()->pluck('reference')->first();
$response = $this->post(
    'http://website.test/applications/'.$applicationRef.'/update',
    ['title' => null]
);

$response->assertSessionHasErrors('title');
 

Комментарии:

1. спасибо @matiaslauriti, однако, используя ваш пример, возвращает ошибку, в сеансе отсутствует ожидаемый ключ [ошибки]. Не удалось утверждать, что ложь является истиной. есть какие-нибудь мысли?

2. Это означает, что ваш контроллер не возвращает никаких ошибок. Мой код верен, он утверждает то, что должен. Можете ли вы поделиться своим контроллером ?