测试一个缺少元素的表单给我一个错误,就是ErrorController.php

时间:2011-09-17 23:45:59

标签: php zend-framework phpunit zend-form

我正在对我的登录表单进行一些测试,但我注意到如果我没有发送所有预期的参数,我会收到此错误:

  

致命错误:在第47行的C:\ demo \ application \ controllers \ ErrorController.php中的非对象上调用成员函数hasResource()

例如这个测试代码给了我错误:

public function testLoginPage ()
{
    $this->request->setMethod('POST')->setPost(
    array('username' => 'foobar');

    $this->dispatch('/usuario/login');
}

但如果我发送所有元素,一切都按预期工作:

public function testLoginPage ()
{
    $this->request->setMethod('POST')->setPost(
    array('username' => 'foobar','password' => 'secret');
    $this->dispatch('/usuario/login');
}

这是正常的吗?我不明白为什么我在ErrorController.php上收到错误,连接在哪里?

(我认为这可能是没有加载的东西,但为什么它在所有元素都有效的时候起作用?)

理解这一点的任何帮助将不胜感激。

由于

更新

我只是在application.ini中更改了db database的错误密码,这给了我同样的错误。现在我甚至不认为是形式,但可能会在bootstart上调用,这取决于Zend_Auth身份。但是Fatal error: Call to a member function hasResource() on a non-object是什么意思?如何加载该对象?

1 个答案:

答案 0 :(得分:4)

阅读您收到的错误消息。您在hasResource()中的非对象上调用了ErrorController.php。您的错误控制器已损坏,但这不是问题所在。

问题是在某个地方(可能在您的表单,引导程序或其他任何地方)抛出异常会触发错误控制器。修复或禁用错误处理程序以获取异常消息和堆栈跟踪以找出问题。

禁用错误处理程序

$front = Zend_Controller_Front::getInstance();
$front->setParam('noErrorHandler', true);