Phpunit выдает ошибку неопределенных переменных проектов

Я изучаю PHPUnit с Laravel и застрял в ошибке. Я следил за TDD с Laravel от Laracasts и сталкиваюсь с ошибкой PHPunit, когда выполняю запрос на получение.

Ошибка, которую я получаю:

ErrorException: неопределенная переменная: проект

C:\xampp\htdocs\birdboardapp\storage\framework\views\06b7a65ce168ffa601dc57bf60713aa232636d2f.php:7

Мой тестовый пример

  /** @test */
    public function a_user_can_view_a_project()
    {

        $this->withoutExceptionHandling();

        $project = $attributes = factory('App\Project')->create();

        $this->get('/projects/' . $project->id)
            ->assertSee($project->title)
            ->assertSee($project->description);
    }

Мои маршруты/web.php, как показано ниже

 Route::get('/projects/{project}', 'ProjectsController@show');

ProjectsController это

public function show(){

    $project = Project::findOrFail(request('project'));

    return view('projects.show' ,compact($project));
}

и представление (show.blade.php в каталоге проектов)

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<h1>{{ $project->title }}</h1>
<div>{{ $project->description }}</div>
</body>
</html>

Теперь, когда я пытаюсь запустить тестовый пример a_user_can_view_a_project, он выдает ошибку: «ErrorException: Undefined variable: project».

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
304
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем методе контроллера show вы, кажется, вызываете compact($project), но функция compact работает иначе.

compact принимает имя переменной, а не саму переменную.

См. : https://www.php.net/manual/en/function.compact.php

Решение будет:

  1. используйте compact правильно:
public function show() {
  $project = Project::findOrFail(request('project'));

  return view('projects.show' , compact('project'));
}
  1. вообще не используйте compact (рекомендуется):
public function show() {
  $project = Project::findOrFail(request('project'));

  return view('projects.show' , [
    'project' => $project
  ]);
}

Другие вопросы по теме