2

我正在尝试在 cakephp 中为我的控制器编写测试用例,到目前为止,我已经设法模拟了控制器并包含了在我的控制器功能中使用的 auth 组件。问题是我似乎只能调用一次staticExpects,这意味着我只能为一个函数调用定义一个返回值,我不希望这样,我需要在同一个测试用例中多次调用staticExpects。

这是我的代码的一部分。

$this->TasksController = $this->generate('Tasks', array(
'components' => array('Session','Auth' => array('User'), ) ));

  $this->TasksController->Auth->staticExpects($this->any())
    ->method('User')
    ->with('userID')
    ->will($this->returnValue(224));
     $this->TasksController->Auth->staticExpects($this->any())
    ->method('User')
    ->with('accID')
    ->will($this->returnValue('some ID here'));

每当我这样做并运行测试时,它都会给我这个错误

方法名称的预期失败等于调用 0 次或多次时 参数 0 调用 AuthComponent::user('userID') 与预期值不匹配。断言两个字符串相等时失败。

请帮忙 :)

4

1 回答 1

1

您必须指定何时使用 $this->at(index) 调用静态方法。

$this->TasksController->Auth->staticExpects($this->at(1))
    ->method('user')
    ->with('userID')
    ->will($this->returnValue(224));

$this->TasksController->Auth->staticExpects($this->at(2))
    ->method('user')
    ->with('accID')
    ->will($this->returnValue('some ID here'));

如果您不确定何时调用它们,请逐个尝试每个期望,直到错误消息为您提供所谓的

--- Expected
+++ Actual
@@ @@
-'userID'
+'accID'

最后一件事,正确的方法名称是“用户”而不是“用户”

于 2012-10-10T08:07:27.733 回答