我仍然是phpunit的新手,所以我希望能夠正確解釋這一點。 我想用PHPUnit運行一個控制器測試,但是使用Zend_Auth的插件重定向回登錄。 如何創建存根數據?我嘗試將它放在我的setUp中,但Zend_Auth似乎在setUp之後重新實例化。 感謝您的任何幫助如何使用Zend_Auth插件對PHPUnit存根數據進行重定向
1
A
回答
1
您只需手動在您的測試用例中進行身份驗證。再說,如果你有一個自定義類My_Auth_Adapter它實現了Zend_Auth_Adapter_Interface,你可以做這樣的事情:
// authentication - you can place it in setUp() method if you want
$adapter = new My_Auth_Adapter('someusername', 'somepassword');
Zend_Auth::getInstance()->authenticate($adapter);
// checking if it's successful
$this->assertTrue(Zend_Auth::getInstance()->hasIdentity());
// testing your controller code
$this->dispatch('/some/url');
$this->assertController('some');
$this->assertAction('url');
$this->assertXpath(/*some element on your page*/);
// and so on
1
我喜歡Wallgate如何使用自定義適配器預先填充登錄。稍後再嘗試一下。現在,我使用這個。
// login as a valid user
$this->request
->setMethod('POST')
->setPost(array(
'username' => 'foobar',
'password' => 'foobar'
));
$this->dispatch('/user/login');
// to make another request, we need to reset both request and response
$this->resetRequest();
$this->resetResponse();
$this->dispatch('user/contactdetail');
最後一行導致登錄頁面成功。