Zend_Test_PHPUnit_ControllerTestCase:测试视图参数而不是渲染输出

ere*_*non 2 php phpunit unit-testing zend-framework

我正在使用Zend_Test_PHPUnit_ControllerTestCase来测试我的控制器.此类提供了各种方法来测试呈现的输出,但我不想让我的视图脚本参与其中.我想测试一下我的观点.有没有办法访问控制器视图对象?

这是一个例子,我正在尝试做什么:

<?php
class Controller extends Zend_Controller_Action
{
    public function indexAction()
    {
        $this-view->foo = 'bar';
    }
}

class ControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{

    public function testShowCallsServiceFind()
    {
        $this->dispatch('/controller');

        //doesn't work, there is no such method:
        $this->assertViewVar('foo', 'bar');

        //doesn't work, end_Test_PHPUnit_ControllerTestCase has no getView method:
        $this->assertEquals(
            'bar',
            $this->getView()->foo
        );

    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

如果你真的必须对视图进行断言,那么请使用它Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view并对其进行断言.

然而,Zend_Test的意图是使用xpath查询或类似的东西来断言实际响应.这将允许您完全测试您的应用程序,而不仅仅是它的一部分.

如果您只是断言视图包含一个var并且它等于给定的东西,那么您并没有真正测试它是否以正确的方式使用.