Unit testing 测试不工作CakePHP2.0

Unit testing 测试不工作CakePHP2.0,unit-testing,cakephp,testing,phpunit,cakephp-2.0,Unit Testing,Cakephp,Testing,Phpunit,Cakephp 2.0,我使用Cakebake命令为控制器创建了一个测试 现在,我想测试控制器的函数“index”,为此我做了以下工作: public function testIndex() { echo "printed"; $result = $this->testAction("/comments/1"); echo "not printed"; } 1是参数,是评论所在帖子的id。无论如何,控制器工作得很好,没有问题 如您所见,调用testAction方法后测试崩溃。(它不打

我使用Cake
bake
命令为控制器创建了一个测试

现在,我想测试控制器的函数“index”,为此我做了以下工作:

public function testIndex() {

   echo "printed";

   $result = $this->testAction("/comments/1");

   echo "not printed";

}
1是参数,是评论所在帖子的id。无论如何,控制器工作得很好,没有问题

如您所见,调用testAction方法后测试崩溃。(它不打印第二个回音)

我已经看到,如果在控制器上调用的操作对其模型有任何调用,testAction调用将不起作用。但是,如果要测试的操作没有对任何模型进行任何调用,那么它就可以完美地工作

这里发生了什么事? 顺便说一句,default和test数据库中都有数据,所以数据库也没有问题

谢谢

更新: 这里是由Cake bake命令生成的testController的其余部分:

<?php
/* Comments Test cases generated on: 2012-04-12 11:49:17 : 1334224157*/
App::uses('CommentsController', 'Controller');

/**
 * TestCommentsController *
 */
class TestCommentsController extends CommentsController {
/**
 * Auto render
 *
 * @var boolean
 */
    public $autoRender = false;

/**
 * Redirect action
 *
 * @param mixed $url
 * @param mixed $status
 * @param boolean $exit
 * @return void
 */
    public function redirect($url, $status = null, $exit = true) {
        $this->redirectUrl = $url;
    }
}

/**
 * CommentsController Test Case
 *
 */
class CommentsControllerTestCase extends CakeTestCase {
/**
 * Fixtures
 *
 * @var array
 */
    public $fixtures = array('app.comment');

/**
 * setUp method
 *
 * @return void
 */
    public function setUp() {
        parent::setUp();

        $this->Comments = new TestCommentsController();
        $this->Comments->constructClasses();

    }

/**
 * tearDown method
 *
 * @return void
 */
    public function tearDown() {
        unset($this->Comments);


        parent::tearDown();
    }

测试控制器时,请确保通过
ControllerTestCase
扩展测试用例类,以利用
testAction()
方法。

您的testAction()方法在哪里?代码?最好能看到测试用例的其余部分(即父类、mock、imports等)。我不知道,这是CakePHP中定义的用于测试的方法。应该有用:@jeremyharris我现在已经更新了。它完全是由cake bake命令生成的。正如文档中指定的,您的测试用例需要扩展
ControllerTestCase
而不是
CaketTestCase
。这样它就可以利用新的
testAction
方法。