Тестирование с помощью PhpUnit блэйд-представления, содержащего директивы @include или @extend в пакете Laravel 5 - PullRequest
0 голосов
/ 22 марта 2019

Я разрабатываю пакет Laravel и пытаюсь выяснить, как проверить с помощью PhpUnit, Blade view , который содержит @ include или @ extend директивы.

Это структура папки ресурсов пакета:

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

create и edit представления начинают расширять макет один.

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

Когда я устанавливаю пакет в приложение и публикую представления, это работает нормально, но когда я в тесте окружение и я запускаю PhpUnit, я получаю сообщение об ошибке.

Ответ не является представлением.

Это потому, что PhpUnit не может разрешить адрес представления.

Я также пытался использовать этот подход, чтобы избежать тестирования этой строки кода.

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

Но я PhpUnit снова выдаю ту же ошибку.

Поскольку невозможно присвоить относительный путь директиве @extends или @include, знаете ли вы, как я могу проверить свое представление, не комментируя эту строку @extends?

У меня естьуже проверял переполнение стека и в интернете, но я не нашел упоминаний об этом.

1 Ответ

0 голосов
/ 23 марта 2019

Я решил зарегистрировать представление в 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' => '', 
])
...