在单元测试运行前可能不需要 Vite 构建资源,除非运行的是 Dusk 测试。
比如当运行测试命令时抛出如下错误:
Vite manifest not found at: /Users/curder/Sites/laravel/public/build/manifest.json
因为没有在测试前构建前端资源,所以对应用程序页面的静态资源请求找不到 Vite 清单文件,而这些文件通常需要在本地运行 npm run dev
或生产环境中运行 npm run build
时可用。
使用 Pest
在使用 Pest 进行功能测试时,可以通过在所有 Feature
测试中添加一个 beforeEach
钩子来禁用 Vite
:
uses(Tests\TestCase::class)
->beforeEach(fn () => $this->withoutVite())
->in('Feature');
使用 PhpUnit
如果使用的是 PHPUnit,可以在测试基类的 setUp
方法中调用 withoutVite
方法来实现相同的效果:
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
protected function setUp(): void
{
parent::setUp();
$this->withoutVite();
}
}
通过在测试中禁用 Vite,可以避免在测试环境中由于缺少前端构建资源而导致的错误。
这种方法特别适用于不需要前端资源的单元测试和功能测试。