Как получить переменные Response в тесте Laravel PHPUnit?

Я тестирую метод контроллера и получаю доступ к маршруту в тесте.

Затем я хотел бы убедиться, что правильная модель была возвращена в виде и загружена всеми правильными отношениями.

Я знаю, что я могу сделать это:

$this->assertViewHas("content");

Но как я могу проверить, что модель содержимого, которая была возвращена в представление, имеет правильную, например, категорию? т.е. как я могу получить объект модели контента, а затем сделать что-то вроде

$this->assertEquals($content->category->name, "category 1");

?

4 ответа

Взломав его с помощью отладчика, я думаю, вы можете получить свой "контент" из ответа:

$content = $response->getOriginalContent()->getData()['content']

getData () возвращает ваши данные, отправленные в представление в виде массива.

Вы можете использовать следующее, чтобы получить массив, который передается в представление:

      $response->original->getData()

Это происходит из Illuminate/Http/ResponseTrait (ссылка на документы ).

Использование assertSee():

$response->assertSee("category 1");

Вы можете использовать

      $your_desired_data = $response->assertSee('var_tag');

и если это массив данных, вы можете получить доступ к его данным:

      $first_name = $your_desired_data['first_name'];
Другие вопросы по тегам