ログインの背後にあり、zend_aclとzend_authを利用するアプリケーションがあります。
ディスパッチ前に、ACLのすべてのルールを作成するACLプラグインがあります。また、ログインしているかどうか、ログインしているかどうか、ACLに従って要求されたリソースにアクセスできるかどうかを確認するAuthプラグインもあります。
アプリケーションは完全にログインの背後にあるため、ACLはログインしている場合にのみ作成されます。
これをユニットテストすることは不可能であるように思われます、あるいはむしろ私が明白な何かを見逃している可能性が高いです。
単体テストのセットアップメソッドでは、zend_authインスタンスを返すログインの成功をシミュレートします。合格したテストは、このログインが成功したことを示しています。
ただし、テストを通じて別の場所にディスパッチしようとしたり、ログインしたユーザーが特定のリソースにアクセスできるかどうかを評価したりすると、まだログインしていないため、プラグインによって常に拒否されます。これがなぜであるかはわかりません。 、誰かアドバイスできますか?
たとえば、これは次のように合格します。
public function testLoggedIn()
{
$this->assertTrue( Zend_Auth::getInstance()->hasIdentity() );
}
プラグインによって拒否されるため、これは失敗します。
public function testUserAccess()
{
$this->dispatch('/home');
$this->assertResponseCode(200);
$this->assertQueryContentContains('#nav_side');
$this->resetRequest()
->resetResponse();
}
これは、プラグインがユーザーがログインしていることを認識していないため、まだログインページにリダイレクトしているように見えることを発見しました。
どんな助けでも大歓迎です。