PHPunit在zendframework 2中

时间:2013-03-26 10:14:31

标签: php phpunit zend-framework2

我正在尝试将phpunit与zendframework一起使用,我正在使用

中的教程

https://media.readthedocs.org/pdf/zf2/latest/zf2.pdf这是我的

bootstrap.php中

<?php
chdir(dirname(__DIR__));
include __DIR__ . '/../init_autoloader.php';

这是我的IndexControllerTest.php

<?php

namespace ApplicationTest\Controller;

use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase;

class IndexControllerTest extends AbstractHttpControllerTestCase
{
public function setUp()
{
$this->setApplicationConfig(
include '/C:/wamp/www/zf2/config/application.config.php'
);
    parent::setUp();
}

public function testIndexActionCanBeAccessed()
{
    $this->dispatch('/'); // this is line 20
    $this->assertResponseStatusCode(200);

    $this->assertModule('application');
    $this->assertControllerName('application_index');
    $this->assertControllerClass('IndexController');
    $this->assertMatchedRouteName('home');
}
}

我得到了以下错误

Warning: include(C:\wamp\www\zf2\module\Application\test/../init_autoloader.php)
: failed to open stream: No such file or directory in C:\wamp\www\zf2\module\App
lication\test\Bootstrap.php on line 4


Fatal error: Class 'Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase'
not found in C:\wamp\www\zf2\module\Application\test\ApplicationTest\Controller
\IndexControllerTest.php on line 8

我认为这是一个路径问题(auloading)但我不知道如何修复

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

Warning: include(C:\wamp\www\zf2\module\Application\test/../init_autoloader.php)
: failed to open stream: No such file or directory in C:\wamp\www\zf2\module\App
lication\test\Bootstrap.php on line 4

此警告告诉您无法找到init_autoloader.php文件的位置。假设该文件位于ZF2项目的根目录(例如C:\ wamp \ www \ zf2),按照惯例,您需要更改:

include __DIR__ . '/../init_autoloader.php';

include __DIR__ . '/../../../init_autoloader.php';

编辑续......

PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Unable to 
load ZF2. Run php composer.phar install or define a ZF2_PATH environment 
variable.' in C:\wamp\www\zf2\init_autoloader.php:48

您的init_autloader.php文件无法找到ZF2库自动加载器。当你使用作曲家时。添加

"zendframework/zendframework": "2.1.*",

到composer.json中的"require"部分,如果它还没有。运行composer并使用

更新供应商库
php composer.phar update

尝试再次运行该应用程序,看看它是否有效。它可能取决于您的init_autoload.php文件中包含的内容。如果您仍然遇到问题,请将以下内容添加到init_autoloader.php

if(file_exists('vendor/autoload.php'))
{
    $loader = require 'vendor/autoload.php';
}

答案 1 :(得分:0)

这是致命错误的修复。

您必须错过应用程序中的'zend-test'软件包。

  

$ composer需要zendframework / zend-test