使用 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 进行测试,这是一个包含 @includeBlade 视图 strong> 或 @extend 指令。

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

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

createedit 视图开始扩展 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

Laravel 5 PHPUnit 测试 json 帖子

Laravel 5.4 phpunit 与黄昏测试 Env App_Url

Laravel 5.3 - 避免在 phpunit 测试中发送松弛通知