CakePHP 简单测试助手

发布于 2024-10-31 15:06:54 字数 1032 浏览 5 评论 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();
        }

}

我收到的错误:

Fatal error: Call to a member function read() on a non-object.

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

I am new to unit testing, and have been creating new component, controller, and model tests using SimpleTest. I am using CakePHP Test Suite version 1.2.0.0. I am having trouble creating a view for a helper, and the internet has yielded me no assistance. Here is the helper code:

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

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

And my test code is here:

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

}

And the error I receive:

Fatal error: Call to a member function read() on a non-object.

I am wondering if I need to create a mock view. I am new to all this so any information would be very much appreciated! Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光倒影 2024-11-07 15:06:54

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

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

The error is caused by the SessionHelper because it is not automagically instantiated. You have to instantiate it manually in the startTest() method:

function startTest() {
    $this->MyHelper = new MyHelper();
    $this->MyHelper->Session = new SessionHelper();
}
转身以后 2024-11-07 15:06:54

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

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

After manually creating an instance your class, you have to use constructClasses() to load all your components.

$Class = new ClassController();
$Class->constructClasses();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文