`generate()` 方法和 CakePHP 2 中新的 ControllerTestCase 类有啥区别?

Posted

技术标签:

【中文标题】`generate()` 方法和 CakePHP 2 中新的 ControllerTestCase 类有啥区别?【英文标题】:What's the difference between the `generate()` method and the new ControllerTestCase class in CakePHP 2?`generate()` 方法和 CakePHP 2 中新的 ControllerTestCase 类有什么区别? 【发布时间】:2012-01-03 15:42:34 【问题描述】:

关于 Cakephp 中的单元测试,它似乎是两种主要测试动作的方式。

第一个是使用generate() 方法模拟涉及的控制器:

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

但是in CakePHP 2 a new ControllerTestCase class has been added 显然简化了这个配置:

class PostControllerTest extends ControllerTestCase 

    public $fixtures = array('app.post');

    function testIndex() 
        $result = $this->testAction('/post/index');
        debug($result);
    
    ...

我在通过 ControllerTestCase 类使用组件时发现了几个问题。我想知道这两种方法之间有什么区别(如果有的话)。

谢谢!

【问题讨论】:

【参考方案1】:

不,实际上是一样的,generate 方法用于在使用testAction 之前配置控制器,这样您就可以控制在测试操作之前应该模拟哪些组件、模型或控制器方法.方法generate 仅在ControllerTestCase 类中可用

【讨论】:

以上是关于`generate()` 方法和 CakePHP 2 中新的 ControllerTestCase 类有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 3 REST API + CORS 请求和选项方法

CakePHP-合并添加和编辑问题

跨 CakePHP 检索和传输用户 ID 的安全方法

在 Post 方法上获取 401 Unauthorized [前端 - Angular 2 和后端 - Cakephp 3]

CakePHP saveAll 方法

解密 CakePHP 1.2 数据