2013-01-18 84 views
1

我有問題,測試了Zend_Session,我的測試看起來像:單元測試由Zend_Session

bootstrap.php中

public function _initSession() { 
    try 
    { 
     Zend_Session::setSaveHandler(new APP_Session_SaveHandler_Memcached());    
     Zend_Session::start(); 

     $session = new Zend_Session_Namespace('APP'); 
     Zend_Registry::set('session', $session); 
    } 
    catch(Exception $e) 
    { 
     Zend_Registry::get('log')->err($e); 
    } 
} 

SessionTest.php

public function testSession() { 
    $session = Zend_Registry::get('session'); 
    $session->setExpirationSeconds(1); 
    $session->testIndex = "testValue"; 

    $this->assertEquals('testValue', $session->testIndex); 

    sleep(3); 

    $this->assertEquals(null, $session->testIndex); 
} 

第一個斷言是好的,但第二總是說$ session-> testIndex的值是「testValue」,當它應該是null的時候是正確的?

如果我錯了,請告訴我,因爲我無法弄清楚。

回答

0

每次從會話類訪問數據時,都不會評估到期時間,只是在第一次加載時纔會從會話類訪問數據。一個典型的PHP腳本不應該接管第二個腳本來執行,所以你試圖測試的情況不應該發生在真實世界的情況下。

我還想補充一點,在ZF中沒有很多像這樣的點測試功能 - ZF類已經過單元測試。測試你的應用程序,而不是框架。