使用AbstractControllerTestCase
(或它的子类)时,您会得到一个方便的方法setApplicationConfig()
,让您传递类似于config/application.config.php
的数组,以便您仅包括您需要的模块以进行测试。
如何将进入config/autoload/global.php
的数组传递给AbstractControllerTestCase
?
PS:如果有帮助,我试图传递使用SQLite的自定义ORM连接
答案 0 :(得分:0)
您可以简单地在测试时使用单独的配置文件,并在测试控制器中加载它们。
例如;
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
中的配置项的自动加载/ test.php的
<?php
return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'sqlite:' . __DIR__ .'/../../data/testing.sqlite',
//'dsn' => 'mysql:dbname=somedatabase;host=localhost',
'username' => 'dbuser',
'password' => 'passwordgoeshere',
),
您还可以更改驱动程序以使用SQL lite或运行测试所需的任何内容。
现在您只需要让测试控制器加载我们的新应用程序配置文件:
use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase;
class ExampleTest extends AbstractHttpControllerTestCase
{
public function setUp()
{
$this->setApplicationConfig(
include __DIR__ . '/../../config/application.config.test.php'
);
}
这使您可以将所有测试配置与主应用程序配置设置分开。