使用PhpUnit测试在Laravel 5软件包中包含@include或@extend指令的刀片视图

时间:2019-03-22 05:51:33

标签: laravel laravel-5 composer-php phpunit laravel-blade

我正在开发一个 Laravel软件包,并且我试图弄清楚如何使用PhpUnit进行测试,这是一个包含 @include Blade视图。 strong>或 @extend 指令。

这是包资源文件夹的结构:

resources
-- views
---- create.blade.php
---- edit.blade.php
---- layout.blade.php

创建编辑视图开始扩展布局

@extends('vendor.laravel-responsive-gallery.layout')

当我在应用程序中安装软件包并发布视图时,这很好,但是当我处于测试环境中并且运行PhpUnit时,我得到了错误。

  

响应不是视图。

这是因为PhpUnit无法解析视图的地址。

我也尝试过使用这种方法来避免测试该行代码。

@if (env('APP_ENV')!='testing')
    @extends('vendor.laravel-responsive-gallery.layout')
@endif

但是我PhpUnit再次抛出相同的错误。

由于无法为@extends或@include指令分配相对路径,您知道如何在不注释此@extends行的情况下测试视图吗?

我已经检查了堆栈溢出和Internet上的内容,但没有发现任何提及。

1 个答案:

答案 0 :(得分:0)

我已经解决了在我的包的ServiceProvider中注册视图的问题。
告诉此软件包在/ resources / views目录中提供了一些视图,并且可以使用软件包php-responsive-quote的供应商名称访问此视图。

public function boot(){
     ...
     $this->loadViewsFrom(__DIR__ . '/../resources/views', 'php-responsive-quote');
     ...
}

然后在视图中,以这种方式调用@extends@include指令。

@extends('laravel-responsive-gallery::layout')

@include('laravel-responsive-gallery::partials.input', [
                          'title' => 'Image file name',
                          'name' => 'file_name',
                          'placeholder' => '', 
])