Итак, у меня есть «представление» 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>