0

我是单元测试的新手,并且一直在使用 SimpleTest 创建新的组件、控制器和模型测试。我正在使用 CakePHP 测试套件 1.2.0.0 版。我在为助手创建视图时遇到了麻烦,而互联网没有给我任何帮助。这是帮助程序代码:

class MyHelper extends AppHelper
{
        var $helpers = array('Session');

        function dostuff()
        {
                $helpervar = $this->Session->read('Data');
                if(empty($helpervar))
                {
                        return;
                }
        }
}

我的测试代码在这里:

App::import('Helper', 'MyHelper');


class MyHelperTest extends CakeTestCase {

        function startTest() {
                $this->MyHelper = new MyHelperHelper();
        }

        function testRender() {
                $this->MyHelper->dostuff();
        }

        function tearDown() {
                unset($this->Controller);
                ClassRegistry::flush();
        }

}

我收到的错误是:

致命错误:在非对象上调用成员函数 read()。

我想知道是否需要创建一个模拟视图。我对这一切都很陌生,所以任何信息都将不胜感激!谢谢!

4

2 回答 2

1

该错误是由 引起的,SessionHelper因为它没有自动实例化。您必须在startTest()方法中手动实例化它:

function startTest() {
    $this->MyHelper = new MyHelper();
    $this->MyHelper->Session = new SessionHelper();
}
于 2011-04-09T05:32:53.907 回答
0

手动创建类的实例后,您必须使用它constructClasses()来加载所有组件。

$Class = new ClassController();
$Class->constructClasses();
于 2014-02-03T16:04:25.127 回答