跳到内容

如何在运行测试前自定义引导过程

编辑此页

有时在运行测试时,你需要在运行这些测试之前进行额外的引导工作。例如,如果你正在运行一个功能测试并且引入了一个新的翻译资源,那么你需要在运行这些测试之前清除缓存。

当使用 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 许可获得许可。
目录
    版本