微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 会话开始/结束时的单元测试问题

我在为简单的会话包装器编写单元测试时遇到问题.

该类本身具有一些基本功能集,get,exists等.
所有这些函数都有一个checkrtSessionStart检查,它执行以下操作:

protected static function assertStarted()
{
    if (strlen(session_id()) < 1) {
        throw new Exception("Some text here");
    }
    return;
}

在编写单元集时,我有以下setUp和tearDown方法.我有这些因为我希望每个运行的测试都有一个新的会话环境.

protected function setUp() {
    session_start();
}
protected function tearDown() {
    session_destroy();
}

现在问题,我想要一个测试方法,当我没有开始会话时尝试使用set时失败.为了做到这一点,我将不得不销毁在setUp中启动的会话.像这样:

public function testGetWithoutSession() {
        session_destroy();
        $this->setExpectedException('Exception');
        ESL_Session::set('set', 'value');
        session_start();
    }

然而,这会发出警告“试图破坏未初始化的会话”.当我把一个echo session_id()放在session_destroy前面时 – 它告诉我我有一个有效的会话.

有没有人有经验单元测试会话包装?

附加信息:

> PHP版本5.3.6
> Linux

解决方法:

这是因为在这一点上:

    session_destroy();
    $this->setExpectedException('Exception');
    ESL_Session::set('set', 'value'); // HERE <----
    session_start(); // This is not called anymore!

一个例外和session_start();不再被称为.

我的建议是更改为将tearDown更改为仅在有活动会话时调用session_destory.所以在tearDown“只有你必须清理”.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐