unit-testing - 在 CakePHP 中模拟一个 Controller 方法

标签 unit-testing cakephp testing mocking cakephp-2.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'
    )
));

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

谢谢。

最佳答案

引用我在这个问题中给你的答案: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/

相关文章:

perl - 在 Perl 测试文件中只运行一个命名的测试用例

c# - FluentAssertions 检查对象字段是否不相等?

php - 使用连接语句和子查询的 CakePHP 查询准备

javascript - Mocha 测试在本地通过,但在 Travis CI 上失败

mysql - 如何在cakephp中编写SQL查询?

php - 浏览器在 UTF-8 cakePHP 应用程序上检测到 ISO-8859-1 编码

docker - 使用 docker compose 抑制 docker 网络以进行测试执行隔离

javascript - 如何使用 Jest 成功模拟和捕获错误?

使用 @Input() 进行 Angular2 单元测试

C# stub 。每个可测试对象的接口(interface)?