2012-07-10 8 views
1

$this->request->is('ajax')에 따라 응답 동작이 약간 다른 컨트롤러에 대한 일부 유닛 테스트를 작성하고 있습니다. documentation for testing controllers을 살펴 봤지만 AJAX를 통해 요청을 시뮬레이션하는 방법을 찾을 수없는 것 같습니다.CakePHP 컨트롤러 유닛 테스트 용 헤더 설정

헤더를 testAction()으로 보내면 X-Requested-With 헤더를 설정할 수 있습니까?

편집 : 수퍼 전역을 편집하여이 문제를 해결할 수 있습니다. 누구나 덜 해킹 된 솔루션이 있습니까?

+0

당신은 당신이 방금 확인 할 수있는 특정 코드 블록에 침입하려는 경우 경우 요청 밤은 아약스, 그렇지 않으면 왜 아약스 요청을 보낼 수 없습니까? –

+0

당신의 @NickSavage가 무엇인지 모르겠습니다. 코드를 편집하면 단위 테스트의 목적이 무너 지므로 단위 테스트 내에서 코드에 대한 HTTP 요청을 안정적으로 만들 수 없으므로 입력을 조롱해야합니다. –

답변

2

하나의 해결책은 수동으로 테스트 기간 동안 필요한 환경 변수를 선언하는 것입니다

$_ENV['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'; 
// Run your AJAX test... 
unset($_ENV['HTTP_X_REQUESTED_WITH']); 
관련 문제