我正在使用CodeIgniter 1.7.2和CIUnit v.0.17
我对PHPunit相当新,所以请耐心等待。我已经设置了使用CIUnit扩展的phpUnit项目来测试在codeigniter框架中构建的应用程序。我的问题是,当我运行测试时,我已经编写了从测试中调用的方法检查会话变量'LOGGED_IN',该变量检查用户是否已登录系统。当我运行我的测试时,由于会话变量尚未设置,因为它是通过命令行调用而不是通过会初始化会话的http请求,因此显然已经失败了。
在我看来,当我通过命令行运行测试时,PHPunit无法读取Sessions ...
我该如何解决这个问题?
答案 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变量。