Laravel: Просмотр :: поделиться (…) с помощью $response-> assertViewHas (…) в phpunit

#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 методе AppServiceProvider

2. Нет. Почему? Пожалуйста, объясните.

3. Обычно общий доступ ко всем представлениям осуществляется в AppServiceProvider. Документы

4. Я не делюсь данными со всеми представлениями, я делюсь ими по запросу. Я создал частичное представление и использую его во многих представлениях. Я не хочу копировать-вставлять код контроллера, который собирает данные для этого частичного представления, поэтому я создал для него класс. Теперь, когда я знаю, что view будет иметь эту часть, я выполню соответствующий класс в контроллере, и он создаст структуру данных и предоставит ее представлению.

5. Итак, я изучил это немного подробнее, потому что это меня заинтриговало. Похоже, что assertViewHas помощник Laravel не проверяет данные, которые совместно используются с представлением, которые отделены от данных, переданных в представление явно.