2016-05-25 2 views
0

Предположим, что у меня есть шаблон лезвия:(laravel) поставка издевательских данных для просмотра при тестировании?

// resources/views/fragments/foo.blade.php 
<p>{{ $foo }}</p> 

(. Очевидно, что это очень урезанная версия моего вопроса я не могу понять, почему я когда-нибудь понадобится, чтобы проверить шаблон лезвия, что просто.) в моем контроллере, я обычно заполнить этот шаблон:

// app/Http/Controllers/FooController.php 
$parameters = ['foo' => '']; 
return view('fragments.foo', $parameters); 

проблема в том, что я хотел бы написать тест PHPUnit, чтобы гарантировать, что шаблон делает успешно, когда я прохожу его конкретное значение для $foo, но я не могут понять, как отправлять данные в представление при выполнении модульного теста. Я пробовал это:

// tests/TestFooController.php 
$this->withSession(['foo' => 'bar'])->visit('/foo')->assertViewHas('foo', 'bar'); 

, но этот тест не удался. Как я могу передать свои данные в представление из моего теста?

ответ

0

Наконец гугле вокруг достаточно, чтобы получить обходной путь:

// tests/TestFooController.php 
$parameters = ['foo' => 'bar']; 
view()->composer('fragments.foo', function ($view) use ($parameters) { 
    $view->with($parameters); 
}); 
$this->visit('/foo') 
    ->assertViewHasAll([ 
     'foo' => 'bar', 
    ]); 

прохладная вещь (в зависимости от того, сколько независимости вам нравится, когда тестирование) является то, что если мои FooController проходит другие переменные, но я только переопределить один из них в композиторе с представлением теста другие неизменяемые значения будут по-прежнему присутствовать.

Смежные вопросы