无法从Cakephp phpunit测试中读取cookie数据

时间:2014-01-22 19:36:29

标签: php cakephp cookies phpunit cakephp-2.0

我正在使用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。

1 个答案:

答案 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');