代码之家  ›  专栏  ›  技术社区  ›  erenon

Zend\u Test\u PHPUnit\u ControllerTestCase:测试视图参数和未呈现的输出

  •  2
  • erenon  · 技术社区  · 14 年前

    通道 控制器视图 对象

    <?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
            );
    
        }
    }
    
    2 回复  |  直到 14 年前
        1
  •  5
  •   erenon    14 年前

    如果你真的要反对这个观点,那就随它去吧 Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view

    然而,Zendèu Test的意图是,您可以使用xpath查询或类似的方法针对实际响应进行断言。这将允许您完全测试您的应用程序,而不仅仅是它的一部分。

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

        2
  •  0
  •   chelmertz user1604064    14 年前

    1) Zend_Test_PHPUnit_ControllerTestCase::_resetPlaceholders() 使用中获得的singelton Zend_Registry::getInstance() 并在其中搜索占位符。也许你可以模仿那种行为。

    2) 你试过了吗 $view = Zend_Layout::getMvcInstance()->getView() 已经开始了?我还没有测试过控制器,但是由于测试用例中包含了singelton,也许这并不是一个遥远的猜测。