0

在下面的设置中,有
一个控制器操作 (index/hello) 呈现不同于默认的视图脚本,
index/instead-of-hello.phtml而不是index/hello.phtml

public function helloAction()
{
    $this->renderScript('index/instead-of-hello.phtml');
}

我想对动作实际呈现进行单元测试 index/instead-of-hello.phtml

public function testHelloAction()
{
    $params = array('action' => 'hello', 'controller' => 'Index', 'module' => 'default');
    $urlParams = $this->urlizeOptions($params);
    $url = $this->url($urlParams);
    $this->dispatch($url);
    $renderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
    $this->assertEquals('index/instead-of-hello.phtml', $renderer->getViewScript());
}

此测试失败,因为renderer->getViewScript()返回的是默认渲染的脚本,而不是实际渲染的脚本。

1) IndexControllerTest::testHelloAction
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-index/instead-of-hello.phtml
+index/hello.phtml

我怎样才能成功地测试脚本index/instead-of-hello.phtml是否真的被渲染了?

上面的例子使用了 Zend Framework 1.12 。

4

1 回答 1

1

尝试:

$this->render('index/instead-of-hello.phtml');

这是来自文档的解释:

$this->renderScript()

使用此方法时,ViewRenderer 不会自动确定脚本名称,而是直接将 $script 参数直接传递给视图对象的 render() 方法。

于 2012-11-22T16:16:24.170 回答