我有一个登录后面的应用程序,并使用zend_acl和zend_auth.
在预分派期间,我有一个ACL插件,可以为ACL创建所有规则.我还有一个Auth插件,用于检查您是否已登录,如果可以,则根据ACL访问所请求的资源.
由于应用程序完全在登录后面,因此只有在您登录时才会创建ACL.
单元测试这似乎是不可能的,或者更可能是我错过了一些明显的东西.
在我的单元测试设置方法中,我模拟了一个返回zend_auth实例的成功登录.通过的测试表明此登录成功.
但是,如果我然后通过测试尝试分派到另一个位置,或者评估登录用户是否可以访问给定资源,则它总是被插件拒绝,因为它们仍然没有登录.我不知道为什么这是,有人可以提供建议吗?
例如,这传递:
public function testLoggedIn()
{
$this->assertTrue( Zend_Auth::getInstance()->hasIdentity() );
}
Run Code Online (Sandbox Code Playgroud)
这失败了,因为它被插件拒绝了:
public function testUserAccess()
{
$this->dispatch('/home');
$this->assertResponseCode(200);
$this->assertQueryContentContains('#nav_side');
$this->resetRequest()
->resetResponse();
}
Run Code Online (Sandbox Code Playgroud)
这个,我发现似乎仍然会重定向回登录页面,因为插件不知道用户已登录.
任何帮助非常感谢.