【问题标题】:Testing not working CakePHP2.0测试不工作 CakePHP2.0
【发布时间】:2012-04-24 17:37:41
【问题描述】:

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

现在,我想测试控制器的“索引”功能,为此我这样做:

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();
    }

【问题讨论】:

  • 你的 testAction() 方法在哪里?代码?
  • 最好能看到测试用例的其余部分(即父类、模拟、导入等)。
  • 我不知道,它是在 CakePHP 中定义的用于测试的方法。它应该可以工作:book.cakephp.org/2.0/en/development/…
  • @jeremyharris 我现在已经更新了。完全由 cake bake 命令生成。
  • 如文档中所述,您的测试用例需要扩展ControllerTestCase 而不是CakeTestCase。这样它就可以利用新的testAction 方法。

标签: unit-testing cakephp testing phpunit cakephp-2.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多