我在indexController中有这部分代码:
public function init()
{
$this->_translate = $this->getInvokeArg('bootstrap')->getResource('translate');
}
这一切都很好,在PRD我没有任何错误
但是当我运行我的单元测试时,会产生以下错误:
致命错误:调用成员函数 getResource()在非对象中 K:\阶段 5个\应用\控制器\ IndexController.php 第9行
这是我的测试代码:
class IndexControllerTest extends ControllerTestCase
{
public function testCanDisplayOurHomepage()
{
//Go to the main page of the webapplication
$this->dispatch('/');
//check if we don't end up in an error controller
$this->assertNotController('error');
$this->assertNotAction('error');
//Ok no error lets check if we are on the home page
$this->assertModule('default');
$this->assertController('index');
$this->assertAction('index');
$this->assertResponseCode(200);
}
}
答案 0 :(得分:3)
这在我的单元测试中没有用,因为我只调用应用程序引导程序而不是调用run。
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
要解决这个问题,我将其添加到phpunit boostrap
$appBootstrap = $application->getBootstrap();
$front = $appBootstrap->getResource('FrontController');
$front->setParam('bootstrap', $appBootstrap);
现在$bootstrap = $this->getInvokeArg('bootstrap');
在PHPUnit中运行良好。
答案 1 :(得分:1)
您是否尝试在Bootstrap调用中调用bootstrap进行翻译?
$this->bootstrap("translate")
答案 2 :(得分:0)
选中answer。
看起来Zend_Controller_Action->getInvokeArg('bootstrap')
在单元测试环境中不起作用。