use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Illuminate\Support\Facades\Artisan;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
Artisan::call('cache:clear');
Artisan::call('route:clear');
Artisan::call('config:clear');
return $app;
}
}
3条答案
按热度按时间ars1skjm1#
据我所知,没有这样的方法来做到这一点,因为这不是单元测试的范围。
单元测试旨在为每个测试设置相同的环境,所有测试的环境不是其责任。
但是您仍然可以通过创建一个自定义命令来调用
config:clear
和test
。1.自定义命令。
php artisan make:command test
2.编辑测试命令。
默认路径为
app/Console/Commands/test.php
。3.通过自己的test命令调用单元测试。
如果您没有更改默认的
$signature
,则app:test
将是您刚刚创建的默认命令。运行
php artisan app:test
调用单元测试。5sxhfpxr2#
添加
在tests/TestCase.php
m3eecexj3#
您可以通过创建自己的TestCase(或编辑原始的
TestCase,php
)并将这些任务添加到createApplication
方法中来完成此操作:每个测试都应扩展此TestCase,而不是
Illuminate\Foundation\Testing\TestCase
你也可以考虑在你的开发环境中不缓存路由和配置。在phpunit.xml中,你也可以将测试期间使用该高速缓存驱动程序设置为与开发期间使用的不同的驱动程序,例如:
这样就不必在运行测试之前清除缓存。
在this answer中,你可以阅读更多关于测试期间配置缓存的内容。在那里,你还可以找到一个GitHub问题的链接,该问题讨论了在运行测试之前清除缓存。