【问题标题】:CakePHP Simpletest helperCakePHP 简单测试助手
【发布时间】:2011-08-01 16:32:04
【问题描述】:

我是单元测试的新手,并且一直在使用 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()。

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

【问题讨论】:

    标签: php cakephp simpletest


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      $Class = new ClassController();
      $Class->constructClasses();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-04
        相关资源
        最近更新 更多