Как получить переменные 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'];