如何在运行测试前自定义引导过程
有时在运行测试时,你需要在运行这些测试之前进行额外的引导工作。例如,如果你正在运行一个功能测试并且引入了一个新的翻译资源,那么你需要在运行这些测试之前清除缓存。
当使用 Symfony Flex 安装测试时,它已经创建了一个 tests/bootstrap.php
文件,该文件在你的测试之前由 PHPUnit 运行。
你可以修改此文件以添加自定义逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// tests/bootstrap.php
use Symfony\Component\Dotenv\Dotenv;
require dirname(__DIR__).'/vendor/autoload.php';
if (file_exists(dirname(__DIR__).'/config/bootstrap.php')) {
require dirname(__DIR__).'/config/bootstrap.php';
} elseif (method_exists(Dotenv::class, 'bootEnv')) {
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
}
+ // executes the "php bin/console cache:clear" command
+ passthru(sprintf(
+ 'APP_ENV=%s php "%s/../bin/console" cache:clear --no-warmup',
+ $_ENV['APP_ENV'],
+ __DIR__
+ ));
注意
如果你不使用 Symfony Flex,请确保此文件在你的 phpunit.xml.dist
文件中配置为引导文件
1 2 3 4 5 6 7
<!-- phpunit.xml.dist -->
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit
bootstrap="tests/bootstrap.php"
>
<!-- ... -->
</phpunit>
现在,当运行 vendor/bin/phpunit
时,缓存将在运行所有测试之前由引导文件自动清除。
这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可获得许可。