我在测试我的方法之一时遇到了麻烦,因为它使用了没有模型的供应商类。
嗯,问题是我希望该方法返回我想要的东西。 有人告诉我,模拟一个方法是让它返回我想要的。
例如,当我调用“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'
)
));
所以我想我应该使用第一个选项:方法 但是...如何让它返回我想要的?
谢谢。
最佳答案
引用我在这个问题中给你的答案:How can i test an Add function on 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
关于unit-testing - 在 CakePHP 中模拟一个 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198090/