Я делюсь несколькими вещами со всеми представлениями в моем проекте laravel в AppServiceProvider:
public function boot()
{
$userLocation = geoip()->getLocation(geoip()->getClientIP());
view()->share(['user' => \Auth::user(), 'userLocation' => $userLocation]);
}
Но когда я проверяю это, они не появляются:
/** @test */
public function page_has_recent_reviews()
{
$response = $this->get(route('home'));
$response->assertSuccessful();
$response->assertViewHasAll(['recentReviews', 'recentPhotos']);
$data = $response->getOriginalContent()->getData();
print_r(array_keys($data)); exit;
}
Выгруженное содержимое содержит:
Array
(
[0] => recentReviews
[1] => recentPhotos
)
Но ни одна из данных не была передана в представление. Как это проверить?
«BadMethodCallException: метод Illuminate\Http\Response::getOriginal не существует».






Итак, через некоторое время я обнаружил, что если вы поделитесь данными в обратный вызов композитора в AppServiceProvider (метод загрузки), они затем будут отображаться в тестах:
view()->composer('*', function($view) use ($userLocation, $ratingStars, $icons)
{
$view->with(['userLocation' => $userLocation, 'user' => \Auth::user());
});
Если вы сделаете
$response->getOriginal('user'), что вы получите?