2012-07-10 83 views
1

我正在爲響應行爲略有不同的Controller編寫一些單元測試,具體取決於$this->request->is('ajax')。我一直在查看documentation for testing controllers,但我似乎無法找到一種方法來模擬通過AJAX所做的請求。爲CakePHP控制器單元測試設置標題

有沒有辦法將標題發送到testAction(),以便我可以設置X-Requested-With標題?

編輯:您可以通過編輯超全球變量來解決此問題。任何人都有一個更簡單的解決方案?

+0

如果你只是試圖闖入某個代碼塊,你可以只檢查是否請求原位缺口,否則AJAX爲什麼你不能發送一個Ajax請求? – 2012-07-10 03:31:37

+0

我不確定你的建議是@NickSavage。編輯代碼不利於單元測試的目的,並且在單元測試中無法可靠地對您自己的代碼發出http請求,因此需要模擬輸入。 – 2012-07-10 14:27:15

回答

2

一種解決方案是手工申報必要的環境變量爲測試的持續時間:

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