Cakephp 2.0模拟验证

时间:2012-07-20 12:35:03

标签: unit-testing cakephp mocking

我正在开发Cake 2.2中的应用程序, 我正在写一些单元测试。 模型测试工作正常,我总体上对控制器测试有一些问题。

情况: - 大多数操作都需要用户登录 - 有自定义组件和供应商库 - 我有所有桌子的固定装置

问题: - 许多操作使用“$ this-> Auth-> user()”方法来获取用户数据 - 如果我为该操作编写测试,则用户数据(显然)不存在

我的(不工作)解决方案:   - 我试图模拟auth组件,以便它包含user-method并始终返回包含用户数据的静态数组,但它返回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');

它只是说没有调用该方法(尽管Days控制器内的设置方法只调用一次)。 这个样机有什么问题?嗯..

任何帮助将不胜感激!

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

1 个答案:

答案 0 :(得分:1)

也许使用:

$Days->Auth->staticExpects(

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