我挣扎在得到一个PHPUnit的测试与ZF2工作。
我的目录结构如下所示
project
- src
- config, data, module, public, vendor
- init_autoloader.php
- test
- bootstrap.php
- SimpleTest.php
应用程序本身效果很好。
现在运行PHPUnit测试,我的bootstrap.php如下所示
putenv('ZF2=../src/vendor/zendframework/zendframework/library');
$loader = include '../src/vendor/autoload.php';
include '../src/init_autoloader.php';
这适用于ZF2有关的事情,但是没有找到我的模块。 然后我读,我有以下行添加到我的bootstrap.php
Zend\Mvc\Application::init(include '../src/config/application.config.php');
但现在我得到以下错误:
PHP Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (Mymodule) could not be initialized.' in /Users/_/src/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php:139
不幸的是,我没能解决这个问题。 我做错了什么? 我怎样才能使这项工作?
非常感谢你。
在此期间,我能够使用来解决这个问题set_include_path()
和spl_autoload_register()
中所描述http://robertbasic.com/blog/unit-testing-zend-framework-2-modules 。
我有这个问题为好。
我解决了它从我的使用下面的参数ZF2项目的根目录运行PHPUnit:
./vendor/bin/phpunit
--bootstrap ./module/Rest/test/Bootstrap.php
./module/Rest/test/RestTest/Controller/RestControllerTest.php
我的
<zf2_project_root>/module/Rest/test/TestConfig.php.dist
是设置了这里测试我的休息模块显示:
<?php
return array(
'modules' => array(
'Rest' // <- my 'Rest' module is the one I test here.
),
'module_listener_options' => array(
'config_glob_paths' => array(
'../../../config/autoload/{,*.}{global,local}.php',
),
'module_paths' => array(
'module',
'vendor',
),
),
);
当然,我./composer.json包含的PHPUnit如下参考:
{
"require" : {
...,
"phpunit/phpunit" : "3.7.*",
...,
}
}
注意:
PHPUnit的也可以用仅引导类调用(即,指定内部消除测试套件类)。 也使用--colors标志使输出的PHPUnit更可读的:
./vendor/bin/phpunit
--colors
--bootstrap ./module/Rest/test/Bootstrap.php