PHPUnit无法读取Session(CodeIgniter和CIUnit)

时间:2011-10-03 09:11:12

标签: unit-testing codeigniter phpunit

我正在使用CodeIgniter 1.7.2和CIUnit v.0.17

我对PHPunit相当新,所以请耐心等待。我已经设置了使用CIUnit扩展的phpUnit项目来测试在codeigniter框架中构建的应用程序。我的问题是,当我运行测试时,我已经编写了从测试中调用的方法检查会话变量'LOGGED_IN',该变量检查用户是否已登录系统。当我运行我的测试时,由于会话变量尚未设置,因为它是通过命令行调用而不是通过会初始化会话的http请求,因此显然已经失败了。

在我看来,当我通过命令行运行测试时,PHPunit无法读取Sessions ...

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在设置会话var / checks凭证的代码块中包含以下代码:

 if(php_sapi_name() == 'cli' && empty($_SERVER['REMOTE_ADDR'])) {
    //code to say logged in probably return true;
    return true;
 } else {
    //normal login checking of credentials
 }

这将确保它从命令行运行,并且可以安全地路由凭证检查(可能。)

另请注意,即使在旧版本的CI中,您也应该使用$this->db->session->userdata()函数来检查会话变量,而不是直接访问$ _SESSION变量。