Zend_Test_PHPUnit_ControllerTestCase: тестировать параметры представления и не визуализированный вывод - PullRequest
2 голосов
/ 23 марта 2010

Я использую 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
        );

    }
}

Ответы [ 2 ]

5 голосов
/ 23 марта 2010

Если вы действительно должны утверждать против вида, возьмите его с Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view и подтвердите против него.

Целью Zend_Test, однако, является то, что вы будете утверждать против фактического ответа, используя запрос xpath или что-то подобное. это позволит вам полностью протестировать ваше приложение, а не только его часть.

если вы просто утверждаете, что представление содержит переменную var и что она равна заданной вещи, вы на самом деле не проверяете, правильно ли она использовалась.

0 голосов
/ 23 марта 2010

1) Zend_Test_PHPUnit_ControllerTestCase::_resetPlaceholders() использует сингелтон, полученный в Zend_Registry::getInstance(), и ищет его в качестве заполнителей.Может быть, вы могли бы подражать этому поведению.

2) Вы уже пробовали $view = Zend_Layout::getMvcInstance()->getView()?Я еще не тестировал контроллеры, но так как тестовые случаи включают в себя одиночные кнопки, возможно, это не было бы слишком далеко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...