#laravel #phpunit #laravel-blade
#laravel #phpunit #laravel-blade
Вопрос:
Я делюсь своими параметрами с view следующим образом:
IlluminateSupportFacadesView::share('params', $params);
view()->share('params', $params);
и тестируем его с помощью phpunit
вот так
$response = $this->actingAs($user)->get($url);
$response->assertViewHas('params');
И я получаю это FAILURE
Не удалось подтвердить, что массив имеет ключ ‘params’.
Когда я делюсь подобным образом, phpunit становится зеленым
return view('account', compact('params'));
Как я могу протестировать переменные, к которым предоставлен общий доступ view()->share('params', $params);
?
Я использую Laravel 5.8
Комментарии:
1. Предоставляете ли вы общий доступ к данным просмотра в
boot
методе AppServiceProvider2. Нет. Почему? Пожалуйста, объясните.
3. Обычно общий доступ ко всем представлениям осуществляется в AppServiceProvider. Документы
4. Я не делюсь данными со всеми представлениями, я делюсь ими по запросу. Я создал частичное представление и использую его во многих представлениях. Я не хочу копировать-вставлять код контроллера, который собирает данные для этого частичного представления, поэтому я создал для него класс. Теперь, когда я знаю, что view будет иметь эту часть, я выполню соответствующий класс в контроллере, и он создаст структуру данных и предоставит ее представлению.
5. Итак, я изучил это немного подробнее, потому что это меня заинтриговало. Похоже, что
assertViewHas
помощник Laravel не проверяет данные, которые совместно используются с представлением, которые отделены от данных, переданных в представление явно.