PHPUnit with a Zend Framework 2 module

2019-07-01 09:40发布

我挣扎在得到一个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

不幸的是,我没能解决这个问题。 我做错了什么? 我怎样才能使这项工作?

非常感谢你。

Answer 1:

在此期间,我能够使用来解决这个问题set_include_path()spl_autoload_register()中所描述http://robertbasic.com/blog/unit-testing-zend-framework-2-modules 。



Answer 2:

我有这个问题为好。

我解决了它从我的使用下面的参数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


文章来源: PHPUnit with a Zend Framework 2 module