testAction() 函数在 CakePhp 测试中的 debug() 上返回 null
I was trying to learn how to use unit testing in CakePhp, I'm trying to write a controller test. I read about testAction() and debug() function, but It doesn't work for me, I mean, the test method passes, but the debug() returns null (because testAction does)
This is my code:
<?php
App::uses('Controller', 'Controller');
App::uses('View', 'View');
App::uses('PostsController', 'Controller');
class PostsControllerTest extends ControllerTestCase {
public function setUp() {
parent::setUp();
$Controller = new Controller();
$View = new View($Controller);
$this->Posts = new PostsController($View);
}
public function testIndex() {
$result = $this->testAction('Posts/Index');
debug($result);
}
}
Posts/index controller returns a list of all posts stored in the DB.
解决方案I'm assuming you're using CakePHP 2.
$this->testAction()
can return a few different results, depending on the options you give it.
For example, if you set the return
option to vars
, the testAction()
method will return an array of the vars that have been set in the tested action:
public function testIndex() {
$result = $this->testAction('/posts/index', array('return' => 'vars'));
debug($result);
}
In this example, the debug data should be an array of the vars that you set in the /posts/index
action.
The CakePHP documentation describes the possible results that you can have returned here: http://book.cakephp.org/2.0/en/development/testing.html#choosing-the-return-type
Note that the default option, result
, gives you the value that your controller action returns. For most controller actions this will be null
, so the fact that you're getting null
in your example is to be expected.
相关文章