Laravel 5.7: ошибка Phpunit — вызов функции-члена getBag () для строки

Я тестирую сохранение данных в базу данных. Если пропущены обязательные поля, я выдаю исключение, а затем перенаправляю с моего контроллера:

try {
$product = Product::create([
'name' => $request->name,
'description' => $request->description,
]);

return redirect('home')->with('success', 'Record has been added');

} catch(\Exception $e) {

return redirect()->to('course/create')
->withInput($request->input())
->with('errors', 'Required Fields Not Submitted');
}

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

$response = $this->post("/courses/", $data);

$response->assertRedirect('/courses/create');
$response->assertSessionHasErrors();
//$response->assertSessionHasAll();
$response->assertHasOldInput();

но при нажатии assertSessionHasErrors я получаю:

Ошибка: вызов функции-члена getBag () для строки

и при нажатии assertHasOldInput я получаю:

BadMethodCallException: вызов неопределенного метода
Осветить \ Http \ RedirectResponse :: assertHasOldInput ()

в чем проблема?

Благодарю.

0

Решение

Я думаю, что вы должны использовать вызов метод вместо сообщение

Документы — Вызов маршрутов из тестов

Попробуй это

$response = $this->call("POST", "/courses/", $data);
$response = $this->assertRedirect('/courses/create');
$response = $this->assertSessionHasErrors();
$response = $this->assertHasOldInput();
0

Другие решения

Сделайте это вместо этого:

$response = $this->call('POST',  "/courses/", $data);

$response->assertRedirect('/courses/create');
$response->assertSessionHasErrors();
$response->assertHasOldInput();
0

По вопросам рекламы [email protected]