1

ZF2の「はじめに」アプリケーションを作成し、 ZF2UnitTestingチュートリアルのテストを適用しようとしています。今、私はこの簡単なテストで問題を抱えています:

[プロジェクト]/module/Album/test/AlbumTest/Controller/AlbumControllerTest.php

<?php
namespace AlbumTest\Controller;
...
class AlbumControllerTest extends AbstractHttpControllerTestCase
{
    ...
    public function testIndexActionCanBeAccessed()
    {
        $this->dispatch('/album');
        $this->assertResponseStatusCode(200);

        $this->assertModuleName('Album');
        $this->assertControllerName('Album\Controller\Album');
        $this->assertControllerClass('AlbumController');
        $this->assertMatchedRouteName('album');
    }
}

コマンドライン:/ var / www / sandbox / zf2sandbox / module / Album / test /

# phpunit
PHPUnit 3.7.13 by Sebastian Bergmann.

Configuration read from /var/www/sandbox/zf2sandbox/module/Album/test/phpunit.xml

F....

Time: 0 seconds, Memory: 10.00Mb

There was 1 failure:

1) AlbumTest\Controller\AlbumControllerTest::testIndexActionCanBeAccessed
Failed asserting response code "200", actual status code is "500"

/var/www/sandbox/zf2sandbox/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:373
/var/www/sandbox/zf2sandbox/module/Album/test/AlbumTest/Controller/AlbumControllerTest.php:49

FAILURES!
Tests: 5, Assertions: 11, Failures: 1.

したがって、assertResponseStatusCode(200)ステータスコードがであるため、は失敗します500なんで?

ブラウザ( http://zf2sandbox.sandbox.loc/album)でこのパスを呼び出すと、次のように機能します。

ここに画像の説明を入力してください

どうも

4

1 に答える 1

3

答えは、従ったチュートリアルの次の見出しにあります。失敗したテスト ケース。

それによると、サービスマネージャーを構成する必要があります。

$serviceManager = $this->getApplicationServiceLocator();
$serviceManager->setAllowOverride(true);
$serviceManager->setService('Album\Model\AlbumTable', $albumTableMock);

また、これを追加すると、リンクで言及されているように、単体テストで適切なエラーを取得するのに非常に役立ちます。

protected $traceError = true;
于 2013-02-26T13:11:40.360 に答える