#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. Это означает, что ваш контроллер не возвращает никаких ошибок. Мой код верен, он утверждает то, что должен. Можете ли вы поделиться своим контроллером ?