2012-09-29 67 views
1

我有ZF1網站,我正在用phpunit測試它。
我想從一個測試(登錄)存儲cookie並將其傳遞給其他測試(發佈消息等)。Zend_Test,身份和cookies

或者是否有任何方法來設置身份?

此方法不起作用:

class IntegrationalTest extends ControllerTestCase { 

    protected $identity; 

    public function test1() 
    { 
     // some code here 
     $this->assertTrue(Zend_Auth::getInstance()->hasIdentity()); // GOOD 
     $this->identity = Zend_Auth::getInstance()->getIdentity(); 
    } 

    public function test2() { 
     Zend_Auth::getInstance()->getStorage()->write($this->identity); 
     $this->assertTrue(Zend_Auth::getInstance()->hasIdentity()); // FAILED! 
    } 
} 
+1

你知道Zend Framework已經有單元測試嗎?你不需要再測試一次。 – vascowhite

+1

當然,我用它們。 – DmitryR

回答

2

這樣做是在單元測試理念的衝突。測試是孤立的。你不會在他們之間傳遞任何狀態。使用fixtures設置環境。如果您測試模型,請不要使用ControllerTestCase。改爲使用PHPUnit_Framework_TestCase。

+0

同意,那麼如何設置test2的預定義身份? – DmitryR

+1

在這個特殊情況下,我會採取不同的方法。我會使用一個dataProvider(http://www.phpunit.de/manual/3.2/en/writing-tests-for-phpunit.html)並且只有一個測試。測試將有2個參數$ identity,$ expectedStatus。測試將根據提供的數據設置身份(或不)。我會使用$ this-> assertEquals($ result,$ expectedStatus)。我知道這個答案可能會有點混濁。請閱讀我在此粘貼的鏈接以查看示例。 –