Laravel + phpunit - view () не работает в модульном тесте - PullRequest
0 голосов
/ 27 февраля 2019

Итак, у меня есть «представление» XML, которое я хочу протестировать, используя проверенные данные в модуле php.В основном у меня есть это:

public function setUp() {
    parent::setUp();

    //output is an array of mocked data, assume that it's populated
    //"homepage" is a blade template that outputs xml
    $this->xml = view("homepage", $this->output)->render();
}

тогда у меня есть набор тестов, например этот, который проверяет, что XML содержит то, что он должен:

/**
 * A basic test example.
 *
 * @return void
 */
public function testXMLHasTemplate()
{
    $this->assertRegexp('/<template>/', $this->xml);
}

Однако, когда яЗапустив этот базовый тест, я получаю следующие ошибки:

Неустранимая ошибка: метод Illuminate \ View \ View :: __ toString () не должен вызывать исключение, перехвачено ErrorException: синтаксическая ошибка, неожиданная «версия»T_STRING/vendor/phpunit/phpunit/src/Framework/Assert.php в строке 0

Этот же метод представления отлично работает при использовании из контроллера.Но, похоже, он не работает с phpunit .Есть ли способ генерировать представление в phpunit, как если бы вы находились в контроллере?

edit: вот мое «представление» для ознакомления.Это все XML:

homepage.blade.php:

{!! "<?xml version=\"1.0\" ?>" !!}
<homepage template="{{ $template }}">
    @foreach ($entities as $entity) 
        @if ($entity["type"] == 'Section') 
            @include('partials.section', ["section" => $entity])
        @elseif ($entity["type"] == 'SectionGroup')
            <sectiongroup>
                @each('partials.section', $entity['sections'], 'section')
            </sectiongroup>
        @endif
    @endforeach
    <user id="{{ $user["user_id"] }}" email="{{ $user["email"] }}" listening_time="{{ $user["listening_time"] }}"/>
</homepage>

section.blade.php:

<section name="{{ $section['name'] }}" type="{{ $section["section_type"] }}">
    @foreach ($section["items"] as $item)
        @switch($item["type"])
            @case("feed")
                <feed id="{{$item["id"]}}" name="{{$item["description"]}}" imageURL="{{ $item["imageURL"] }}">
                    @include("partials.episode", ["episode" => $item["latest_episode"] ])
                </feed>
            @break
            @case("episode")
                @include("partials.episode", ["episode" => $item])
            @break
            @case("shortcut")
                <shortcut id="{{ $item['id'] }}" name="{{ $item['name'] }}" />
            @break
        @endswitch
    @endforeach
</section>

1 Ответ

0 голосов
/ 27 февраля 2019

Ошибка говорит вам, что в views/homepage.blade.php есть ошибка - строка version присутствует, когда ее не ожидается.Посмотрите, что происходит в этом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...