1

チュートリアル に示されているような単純なアクセス ユニット テストを作成したいと考えています。

私のプロジェクトはZFCUser認証に使用します。

その結果、私の (明らかに認証されていない) テスターHTTP responseは、予想される 200 ではなく、302 を取得します。

私がそれについて何ができるか考えていますか?ありがとう!

チュートリアルのコードは次のようになります。

public function testAddActionCanBeAccessed()
{
    $this->routeMatch->setParam('action', 'add');

    $result   = $this->controller->dispatch($this->request);
    $response = $this->controller->getResponse();

    $this->assertEquals(200, $response->getStatusCode());
}
4

1 に答える 1

3
thanks, good idea! is there an easy way to mock the auth? – Ron

コメントに押し込むには多すぎるため、これを回答として投稿しています。はい、AuthenticationService クラスをモックする簡単な方法があります。まず、Stubs / Mocksのドキュメントを確認してください。

必要なことは、Zend\Authentication\AuthenticationService からモックを作成し、ID を含むふりをするように構成することです。

public function testSomethingThatRequiresAuth()
{
    $authMock = $this->getMock('Zend\Authentication\AuthenticationService');
    $authMock->expects($this->any())
             ->method('hasIdentity')
             ->will($this->returnValue(true));

    $authMock->expects($this->any())
             ->method('getIdentity')
             ->will($this->returnValue($identityMock));

    // Assign $authMock to the part where Authentication is required.
}

この例では、変数$identityMockを事前に定義する必要があります。これは、ユーザー モデル クラスのモックなどである可能性があります。

私はそれをテストしていないので、すぐに動作しない可能性があることに注意してください。ただし、方向を示すだけです。

于 2013-01-11T08:12:34.543 に答える