2010-10-20 47 views
1

我仍然是phpunit的新手,所以我希望能夠正確解釋這一點。 我想用PHPUnit運行一個控制器測試,但是使用Zend_Auth的插件重定向回登錄。 如何創建存根數據?我嘗試將它放在我的setUp中,但Zend_Auth似乎在setUp之後重新實例化。 感謝您的任何幫助如何使用Zend_Auth插件對PHPUnit存根數據進行重定向

回答

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'); 

最後一行導致登錄頁面成功。