1

我在测试 zend_session 时遇到问题,我的测试如下所示:

引导程序.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);
    }
}  

会话测试.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”,当它应该为空时对吗?

如果我错了,请告诉我,因为我无法弄清楚。

4

1 回答 1

0

每次从会话类访问数据时,都不会评估到期时间,只是在首次加载数据时评估。一个典型的 PHP 脚本永远不应该花费一秒钟的时间来执行,因此您尝试测试的情况不应该在现实世界中发生。

我还要补充一点,ZF 中并没有很多像这样的点测试功能——ZF 类已经过单元测试。测试您的应用程序,而不是框架。

于 2013-01-18T14:55:57.983 回答