如何在运行测试时自定义启动进程

3.4 版本
维护中的版本

有时在测试中,你需要在运行那些测试之前做些附加的启动工作。例如,如果你运行的是一个功能测试,并且引入了一个全新翻译源(translation resource),那么你需要在测试执行之前先清空缓存。

要这样做,先添加以下文件:

1
2
3
4
5
6
7
8
9
10
// app/tests.bootstrap.php
if (isset($_ENV['BOOTSTRAP_CLEAR_CACHE_ENV'])) {
    passthru(sprintf(
        'php "%s/console" cache:clear --env=%s --no-warmup',
        __DIR__,
        $_ENV['BOOTSTRAP_CLEAR_CACHE_ENV']
    ));
}
 
require __DIR__.'/autoload.php';

phpunit.xml.dist 中的 autoload.php 替换为 tests.bootstrap.php:

1
2
3
4
5
6
<!-- phpunit.xml.dist -->
 
<!-- ... -->
<phpunit
    bootstrap = "tests.bootstrap.php"
>

现在,你可以在你的 phpunit.xml.dist 文件中定义“何种环境下才需要清空缓存”了:

1
2
3
4
<!-- phpunit.xml.dist -->
<php>
    <env name="BOOTSTRAP_CLEAR_CACHE_ENV" value="test"/>
</php>

现在它成为了一个环境变量 (如 $_ENV),可以用在自定义的启动文件中 (tests.bootstrap.php)。

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)