2014-01-22 1 views
1

Cakephp의 빌드 테스트 프레임 워크를 사용하여 컨트롤러를 테스트하고 있습니다. 나는 사용자가 사이트를 사용할 때 생성되는 다양한 쿠키를 만료시키는 로그 아웃 기능을 가지고있다. 테스트를 통과해야하는지 여부를 결정하기 위해 쿠키를 읽으려고합니다. 즉 쿠키가 올바르게 만료되었는지 테스트합니다. 쿠키 구성 요소가 올바르게 인스턴스화되었는지 확인했지만 거기에 있어야하는 쿠키의 값을 다시 읽을 수는 없습니다. 이 테스트 내가 실행하고 구성하는 코드입니다 :Cakephp phpunit 테스트에서 쿠키 데이터를 읽을 수 없습니다.

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; 
} 

내가 그 출구가 초기 테스트를 죽이고 실현,하지만 난 아무것도 다시 쿠키에서 보낼 수 있는지 확인하기 위해 그것을 사용하고 있습니다. 나는 내가 알고있는 쿠키로부터 어떤 데이터도 읽을 수없는 이유가 확실하지 않다. 누구나 그 이유를 알고 있거나 단위 테스트에서 쿠키를 올바르게 읽는 방법에 대한 해결책을 알고 있습니까?

답변

1

routes.php에서 읽을 수 없습니다. 특정 경우에 configure :: read()를 사용하는 것이 좋지 않습니다. localhost에서는 작동하지만 라이브에서는 작동하지 않습니다. 세션을 올바르게 구성하십시오. AppController 및 현재 컨트롤러 (UserController)에서 세션을 호출하면 테스트 작업에서이를 볼 수 있습니다.

public $components = array('Session', 'RequestHandler', 'Cookie', ...); 

이 같은 세션 작성하는 경우 :

$this->Session->read('Test.tech_cookie_name'); 
:

다음
$this->Session->write('Test.tech_cookie_name', 'tech_cookie_name'); 

이처럼 읽을 수 있어야를

관련 문제