使用 PhpUnit 测试在 Laravel 5 包中包含 @include 或 @extend 指令的刀片视图
Posted
技术标签:
【中文标题】使用 PhpUnit 测试在 Laravel 5 包中包含 @include 或 @extend 指令的刀片视图【英文标题】:Testing with PhpUnit a blade view that contains @include or @extend directives in a Laravel 5 Package 【发布时间】:2019-08-13 02:05:26 【问题描述】:我正在开发一个 Laravel 包,并试图弄清楚如何使用 phpUnit 进行测试,这是一个包含 @include 的 Blade 视图 strong> 或 @extend 指令。
这是包资源文件夹的结构:
resources
-- views
---- create.blade.php
---- edit.blade.php
---- layout.blade.php
create 和 edit 视图开始扩展 layout 视图。
@extends('vendor.laravel-responsive-gallery.layout')
当我在应用程序中安装包并发布视图时,这工作正常,但是当我在 测试环境 中并运行 PhpUnit 时,我得到了错误。
响应不是视图。
这是因为 PhpUnit 无法解析视图的地址。
我也尝试过使用这种方法来避免测试那行代码。
@if (env('APP_ENV')!='testing')
@extends('vendor.laravel-responsive-gallery.layout')
@endif
但我 PhpUnit 再次抛出同样的错误。
由于无法为@extends 或@include 指令分配相对路径,您知道如何在不评论@extends
行的情况下测试我的视图吗?
我已经在 Stack Overflow 和 Internet 上进行了检查,但没有发现任何提及。
【问题讨论】:
【参考方案1】:我已经解决了在我的包的 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' => '',
])
【讨论】:
以上是关于使用 PhpUnit 测试在 Laravel 5 包中包含 @include 或 @extend 指令的刀片视图的主要内容,如果未能解决你的问题,请参考以下文章
使用 PhpUnit 测试在 Laravel 5 包中包含 @include 或 @extend 指令的刀片视图
Laravel 5 使用 phpUnit 进行测试而不重置我的数据库
phpunit 测试资源 laravel 5.5 返回集合而不是 json