Creating a custom Laravel package using the orchestral/testbench package that helps package developer to help with PHPUnit test. So, my package on a different place and not in a Laravel installation exactly. Everything works great except the mix()
function that I'm using on the blade view for resources.
<script src="{{ asset(mix('js/app.js', 'vendor/trade')) }}"></script>
And, I have the following test route set in the web.php
:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function() {
return view('trade::_layouts.app');
});
In addition, I have the following feature test in the ExampleTest.php
file:
public function testBasicTest()
{
$response = $this->get('/');
$response->assertStatus(200);
}
When I am running phpunit
I am seeing the following error:
Expected status code 200 but received 500.
Failed asserting that false is true.
After dumping the $response
in the test, I see the The Mix manifest does not exist.
error. After digging for an hour I found that mix()
helper function is looking for the mix-manifest.json
in the orchestral/testbench
package located under the vendor
instead of the public
folder in my package.
I tried to the following in the package ServiceProvider.php
but didn't work either:
$this->app->bind('path.public', function() {
return base_path().'/../public';
});
In addition, I see the laravel/horizon
package also using the mix()
helper function on the layout.blade.php
file as I am doing right now and it is also using the orchestral/testbench
package for the test. So, how horizon package is doing the test while I can't? What is the to override mix()
helper to ensure the public path is on my package public
path instead of the orchestral/testbench
path?