【问题标题】:The Mix manifest does not exist when using orchestral/testbench使用 Orchestral/testbench 时,Mix 清单不存在
【发布时间】:2019-02-28 19:12:29
【问题描述】:

使用 orchestral/testbench 包创建自定义 Laravel 包,帮助包开发人员帮助进行 PHPUnit 测试。所以,我的包在不同的地方,而不是在 Laravel 安装中。除了我在刀片视图中用于资源的mix() 函数之外,一切都很好。

<script src="{{ asset(mix('js/app.js', 'vendor/trade')) }}"></script>

而且,我在web.php 中设置了以下测试路线:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function() {
    return view('trade::_layouts.app');
});

此外,我在ExampleTest.php 文件中有以下功能测试:

public function testBasicTest()
{
    $response = $this->get('/');

    $response->assertStatus(200);
}

当我运行phpunit 时,我看到以下错误:

Expected status code 200 but received 500.
Failed asserting that false is true.

在测试中转储$response 后,我看到The Mix manifest does not exist. 错误。挖了一个小时后,我发现mix() helper 函数正在寻找orchestral/testbench 包中的mix-manifest.json,它位于vendor 下,而不是我包中的public 文件夹。

我在包ServiceProvider.php 中尝试了以下操作,但也没有成功:

$this->app->bind('path.public', function() {
    return base_path().'/../public';
});

此外,我看到laravel/horizon 包也使用layout.blade.php 文件上的mix() 辅助函数,就像我现在正在做的那样,它也使用orchestral/testbench 包进行测试。那么,当我做不到的时候,horizo​​n package 是如何进行测试的呢?什么是要覆盖 mix() 帮助器以确保公共路径在我的包 public 路径而不是 orchestral/testbench 路径上?

【问题讨论】:

    标签: php laravel phpunit


    【解决方案1】:

    有两种方法可以覆盖public_path()返回的路径,以确保mix()函数可以找到mix-manifest.json文件。

    1. 一种方法是将public_path() 方法完全覆盖到自定义包中。 Laravel 在声明任何好的函数之前使用 if (!function_exists()) {},因为我们可以在包中定义自己的 public_path() 函数。但是,我们需要确保我们的覆盖函数在 Laravel 辅助方法之前加载,这是另一个主题。
    2. 最简单的方法是从我们遇到问题的特定 PHPUnit 测试中更改来自 Laravel IoC 容器的 path.public
    public function testBasicTest()
    {
        $this->app->instance('path.public', $packagePublicDir);
    
        $response = $this->get('/');
    
        $response->assertStatus(200);
    }
    

    【讨论】:

      【解决方案2】:

      我想你错过了npm install &amp;&amp; npm run dev

      【讨论】:

        猜你喜欢
        • 2017-12-22
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 2017-10-24
        • 2018-04-02
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多