我正在使用Cakephp的构建测试框架来测试我的控制器。我有一个注销功能,可以在用户使用网站时创建各种cookie。我试图读取所述cookie以确定测试是否应该通过,即测试cookie是否正确到期。我确保cookie组件已正确实例化,但我无法从应该存在的cookie中读取任何值。这是组成我正在运行的测试的代码:
public function testLogout() {
// setup the cookie component
$collection = new ComponentCollection();
$this->Cookie = new CookieComponent($collection);
$result = $this->testAction('/users/logout');
$cookie_name = Configure::read('tech_cookie_name');
$cookie_data = $this->Cookie->read($cookie_name);
debug($cookie_name);
// cookie data is returning as NULL but I'm expecting some type of value.
debug($cookie_data);
debug($result);
exit;
}
我意识到退出是在早期杀死测试,但我正在使用它来查看是否有任何内容从cookie发回。我不知道为什么我不能从我知道的cookie中读取任何数据。有没有人知道为什么会这样,或者有一个解决方案,如何在单元测试中正确读取cookie。
答案 0 :(得分:1)
在某些情况下,您无法读取routes.php配置:: read(),这不是一个好习惯。它可以在localhost中工作但不能在live中工作。尝试正确配置您的会话。 通过从AppController和当前的Controller(UserController)调用您的会话,您应该能够在测试操作中看到它。
public $components = array('Session', 'RequestHandler', 'Cookie', ...);
如果您按照以下方式编写会话:
$this->Session->write('Test.tech_cookie_name', 'tech_cookie_name');
然后你应该能够这样读:
$this->Session->read('Test.tech_cookie_name');