Laravel + phpunit-view()在单元测试中不起作用

时间:2019-02-27 03:49:54

标签: php laravel phpunit

所以我有一个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>

1 个答案:

答案 0 :(得分:0)

该错误告诉您views/homepage.blade.php中存在错误-预期不会出现字符串version。查看该文件中发生了什么。