我是CakePHP的单元测试部分的新手。没有比现在更好的学习时间了。
我已准备好通过网络上的所有文档和大量教程。在完成一些更基本的单元测试时,我遇到了障碍。
我的控制器:
class TestsController extends AppController {
public $components = array('RequestHandler', 'Security');
public $helpers = array('Js');
public $uses = array('Tests');
public function beforeFilter() {
$this->layout = 'admin';
parent::beforeFilter();
}
/**
* Returns database values of all tests that have been created.
*
*/
public function index() {
if ($this->request->is('requested')) {
return $tests;
}
$this->paginate = array(
'fields' => array('id', 'name', 'email', 'access_token', 'access_token_begins',
'filesizelimit', 'related_files', 'access_token_expires'),
'limit' => 10,
'order' => array(
'created' => 'desc'
));
$this->set('tests', $this->paginate('Test'));
}
我的控制器测试如下所示:
class TestsControllerTest extends ControllerTestCase {
public $fixtures = array('app.test');
public function testIndex() {
$result = $this->testAction('tests/index');
debug($result);
}
}
我的测试结果是:
PHPUNIT_FRAMEWORK_ERROR_NOTICE
Undefined variable: tests
Test case: testsControllerTest(testIndex)
我收到的错误的唯一可行解决方案可能是测试控制器在实际运行testAction()
之前需要进行身份验证吗?
这是CakePHP文档指南中的一个非常简单的示例,但我收到并且未定义变量错误。非常感谢任何帮助。
答案 0 :(得分:1)
我设法回答了我自己的问题。
由于控制器中的if语句,$tests
变量未定义:
public function index() {
if ($this->request->is('requested')) {
return $tests;
}
$this->paginate = array(
'fields' => array('id', 'name', 'email', 'access_token', 'access_token_begins',
'filesizelimit', 'related_files', 'access_token_expires'),
'limit' => 10,
'order' => array(
'created' => 'desc'
));
$this->set('tests', $this->paginate('Test'));
}
运行应用程序时,该语句不会受到影响,但在运行测试时会发生这种情况。在这个给定的函数中,不需要IF语句,因此我的UNDEFINED VARIABLE错误现在已经解决了。