所以我有一个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)(查看: /Users/171599/Documents/php_projects/vmdisks/dlarvarwww/v4api/html/resources/views/homepage.blade.php) 在 /Users/171599/Documents/php_projects/vmdisks/dlarvarwww/v4api/html/vendor/phpunit/phpunit/src/Framework/Assert.php 在第0行
从控制器使用此相同的视图方法也可以正常工作。但是从 phpunit 看,它似乎不起作用。有没有一种方法可以像在控制器中那样在phpunit中生成视图?
编辑:这是我的刀片“视图”以供参考。都是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>
答案 0 :(得分:0)
该错误告诉您views/homepage.blade.php
中存在错误-预期不会出现字符串version
。查看该文件中发生了什么。