当使用AbstractControllerTestCase
(或它的子类)时,您可以得到一个方便的方法setApplicationConfig()
,让您传递一个类似于config/application.config.php
的数组,这样您就只包含测试所需的模块。
如何将进入config/autoload/global.php
的数组传递给AbstractControllerTestCase
?
PS:如果有帮助的话,我正在尝试传递一个使用SQLite 的自定义ORM连接
您只需制作单独的配置文件即可在测试时使用,并将其加载到测试控制器中。
例如;
copy config/application.config.php to config/application.config.test.php
做一个小的更改,允许我们在不接触生产应用程序使用的全局配置文件的情况下加载单独的测试配置文件。
'config_glob_paths' => array(realpath(__DIR__) . '/autoload/{,*.}{global,test}.php'),
这将允许我们覆盖我们需要的任何配置值,因为测试配置文件是在通常的全局配置文件之后加载的。我们现在可以在test.php、anything.test.php等中请求任何特定于测试的配置
现在你可以复制
autoload/global.php to autoload/test.php
您现在可以更改配置项,这些配置项将覆盖global.php 中的配置项
自动加载/测试.php
<?php
return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'sqlite:' . __DIR__ .'/../../data/testing.sqlite',
//'dsn' => 'mysql:dbname=somedatabase;host=localhost',
'username' => 'dbuser',
'password' => 'passwordgoeshere',
),
您还可以更改驱动程序以使用SQLlite或运行测试所需的内容。
现在,您只需要让您的测试控制器加载我们的新应用程序配置文件:
use ZendTestPHPUnitControllerAbstractHttpControllerTestCase;
class ExampleTest extends AbstractHttpControllerTestCase
{
public function setUp()
{
$this->setApplicationConfig(
include __DIR__ . '/../../config/application.config.test.php'
);
}
这允许您将所有测试配置与主应用程序配置设置分开。