0

我在测试我的一种方法时遇到了麻烦,因为它使用了没有模型的供应商类。

好吧,问题是我希望该方法返回我想要的东西。有人告诉我,模拟一个方法是让它返回我想要的。

例如,当我调用“foo()”方法时,我希望它始终返回 true。

我该怎么做?在 CakePHP 食谱我可以找到这个:

$Posts = $this->generate('Posts', array(
    'methods' => array(
        'isAuthorized'
    ),
    'models' => array(
        'Post' => array('save')
    ),
    'components' => array(
        'RequestHandler' => array('isPut'),
        'Email' => array('send'),
        'Session'
    )
));

所以我想我应该使用第一个选项:方法但是......如何让它返回我想要的?

谢谢。

4

1 回答 1

5

请参阅我在这个问题中给你的答案:我如何在 CakePHP2.0 上测试添加函数

$Posts = $this->generate('Posts', array(
    'methods' => array(
        'isAuthorized'
    ),
    'models' => array(
        'Post' => array('save')
    ),
    'components' => array(
        'RequestHandler' => array('isPut'),
        'Email' => array('send'),
        'Session'
    )
));

// tell PHPUnit that `isAuthorized` should return true any time it's called
$Posts
  ->expects($this->any())
  ->method('isAuthorized')
  ->will($this->returnValue(true));
// tell PHPUnit to expect `isPut` once, and to return false
$Posts
  ->RequestHandler
  ->expects($this->once())
  ->method('isPut')
  ->will($this->returnValue(false));

有关模拟的更多信息:http ://www.phpunit.de/manual/3.0/en/mock-objects.html

于 2012-04-19T14:48:05.807 回答