2012-07-20 88 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(

因为用户()是一个静态方法。