2012-04-12 138 views
0

我使用Cake bake命令为控制器创建了一个测试。测试不起作用CakePHP2.0

现在,我想测试控制器的功能“指数”,并为它我这样做:

public function testIndex() { 

    echo "printed"; 

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

    echo "not printed"; 

} 

1帕拉姆,这里的评论是帖子的ID。无论如何,控制器工作得很好,没有问题。

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

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

这里发生了什么? 顺便说一句,这两个数据库,默认和测试都有数据,所以它不是数据库的问题。

谢谢。

UPDATE: 这里你有中的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(); 
    } 
+0

你的testAction()方法在哪里?码? – thecodeparadox 2012-04-12 11:34:15

+0

很高兴看到测试用例的其余部分(即父类,嘲笑,导入等)。 – jeremyharris 2012-04-12 14:11:49

+0

我不知道,它是CakePHP中定义的一个方法,可用于测试。它应该可以工作:http://book.cakephp.org/2.0/en/development/testing.html#testing-controllers – Alvaro 2012-04-12 14:16:16

回答

1

当你正在测试控制器,确保通过ControllerTestCase延长测试用例类利用的testAction()方法。