测试共享到所有视图的数据以确保它存在

问题描述 投票:0回答:1

我在AppServiceProvider的laravel项目中与所有视图分享了一些内容:

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
)

但是没有数据共享给视图。怎么测试这个?

laravel laravel-5 phpunit laravel-5.7
1个回答
0
投票

所以过了一段时间,我发现如果你在AppServiceProvider(引导方法)中的composer callback中共享数据,它将在测试中呈现:

view()->composer('*', function($view) use ($userLocation, $ratingStars, $icons)
    {
        $view->with(['userLocation' => $userLocation, 'user' => \Auth::user());
    });
© www.soinside.com 2019 - 2024. All rights reserved.