2012-07-20 110 views
5

我正在開發一個Cake 2.2的應用程序, ,目前正在編寫一些單元測試。 模型測試工作正常,我在控制器測試中遇到了一些問題。Cakephp 2.0模擬驗證碼

的情況: - 大多數的操作都需要用戶登錄 - 有自定義組件和供應商庫 - 我有燈具的所有表

問題: - 許多行動用「$這 - > Auth-> user()「方法獲取用戶數據 - 如果我爲該操作編寫測試,用戶數據(顯然)不存在

我的(不工作)解決方案: - 我試圖模擬auth組件,以便它包含user-method並始終返回一個靜態ar含有射線的用戶數據,但它返回null,下面的代碼:

$Days = $this->generate('Days', array('components' => 'Auth')); 
$Days->Auth->expects($this->once())->method('user')->will($this->returnValue(array(..userdata etc.))); 
$result = $this->testAction('/days/settings'); 

它只是口口聲聲說該方法不叫(altough戴斯控制器內部的設置方法調用它究竟是一個時間)。 模型有什麼問題?嗯..

任何幫助,將不勝感激!

CNC中 被測試的方法的代碼:

public function myDays() 
{ 
    $user = $this->Auth->user(); 
    $days = $this->Day->find('all', array('conditions' => array('user_id' => $user['id'], 'active' => 1))); 
    $this->set('days', $days); 
} 
+0

你在測試中多次調用'testAction'嗎?這是你的整個測試方法嗎? – 2012-07-20 14:21:15

+0

嗨,不,只有一次,這是目前該操作中的完整代碼,因爲它不起作用,我沒有爲其編寫其他測試代碼.. – 2012-07-23 12:19:06

+0

請還包括您正在測試的方法,它可能會幫助看看發生了什麼。 – 2012-07-23 19:06:33

回答

1

也許使用:

$Days->Auth->staticExpects(

因爲用戶()是一個靜態方法。