4

所以我一直在关注这个教程:

http://framework.zend.com/manual/2.0/en/user-guide/routing-and-controllers.html

我正处于应该运行 phpunit 的地步——我运行命令phpunit module/Album/src/Album/Controller/AlbumControllerTest.php

我遇到了一个问题:

PHP Fatal error:  Class 'Zend\Mvc\Application' not found in /home/...rest of the folders here.../AlbumControllerTest.php on line 71

AlbumControllerTest.php 中的第 71 行是:

$bootstrap        = \Zend\Mvc\Application::init(include 'config/application.config.php');

当我在 Zend/Mvc/ 下查看时,我看到一个名为 Application 的文件,所以我假设这不是问题。

config/application.config.php 看起来像这样:

<?php
// config/application.config.php:
return array(
    'modules' => array(
        'Application',
        'Album',                  // <-- Add this line
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);

?>

根据教程 - 我相信。有谁知道如何解决这个问题?!

4

2 回答 2

4

从 Magento Commerce 2.2.7 升级到 2.3 时,我遇到了同样的问题。我已经通过手动编辑 composer.json 自动加载来修复它:

"autoload-dev": {
    "psr-4": {


        "Magento\\Framework\\": "lib/internal/Magento/Framework/",
        "Magento\\Setup\\": "setup/src/Magento/Setup/",
        "Magento\\": "app/code/Magento/",
        "Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
    }
},

,运行命令:

composer dumpautoload

就是这样。

于 2018-12-16T23:33:04.397 回答
0

显然,您的 ZF2 没有自动加载。

要为您的模块测试设置 zf2 和服务管理器,您可以使用https://github.com/ZF-Commons/ZfcBase/blob/master/test/Bootstrap.php

在您的测试中,您将像这样使用它:

use YourNamespace\Bootstrap;

//...
public function setUp()
{
    Bootstrap::init();
    //...
    $this->controller->setServiceLocator(Bootstrap::getServiceManager());
}
//...
于 2012-11-04T02:04:13.867 回答