PHPUnit с Zend Framework - PullRequest
       24

PHPUnit с Zend Framework

2 голосов
/ 25 мая 2010

Я изучил несколько примеров PHPUnit с Zend Framework, но есть одна часть, которую я не понимаю.

В большинстве примеров Bootstrap приложения запускается из некоторого базового класса внутри setUp() Метод.

Почему не в __construct()? Есть ли веская причина?

Например, я говорю о

1 Ответ

7 голосов
/ 31 мая 2010

Просто для записи, я думаю, это конкретный кусок кода, на который вы ссылаетесь:

class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    public $application;

    public function setUp()
    {
        $this->application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/config/settings.ini'
        );

        $this->bootstrap = array($this, 'bootstrap');
        parent::setUp();
    }

    public function tearDown()
    {
        Zend_Controller_Front::getInstance()->resetInstance();
        $this->resetRequest();
        $this->resetResponse();

        $this->request->setPost(array());
        $this->request->setQuery(array());
    }

    public function bootstrap()
    {
        $this->application->bootstrap();
    }
}

В модульном тестировании методы setUp и tearDown используются для

установить мир в известном состоянии и затем верните его в исходное состояние когда тест завершен. Это известное состояние называется приспособлением теста.

Способ работы с приборами в библиотеках xUnit может отличаться, но концепция остается неизменной. См. Также главу fixtures в руководстве по PHPUnit:

PHPUnit поддерживает совместное использование настроек код. Перед запуском тестового метода метод шаблона с именем setUp () вызывается. setUp () - это место, где вы создаете объекты, против которых вы будете тестовое задание. После того, как метод испытания закончили бегать, удалось ли или не удалось, другой метод шаблона Вызывается tearDown (). tearDown () - это место, где вы очищаете объекты, против которых вы проверяли.

Следовательно, PHPUnit заботится о выполнении метода setUp перед каждым единственным тестовым методом, включенным в класс тестового примера, тогда как tearDown обрабатывается после каждого выполнения.

С учетом вышесказанного Zend Framework предоставляет дополнительный слой поверх PHPUnit для выполнения функциональных тестов , то есть тестов в «черных коробках» для функций, а не для отдельных блоков исходного кода. Это достигается за счет расширения Zend_Test_PHPUnit_ControllerTestCase, чтобы обеспечить доступ к ресурсам приложения.

В этом конкретном примере приложение загружается перед выполнением каждого теста в тестовом примере. Это имеет смысл, если принять во внимание, что нам не нужны ресурсы приложения везде, как, например, в необработанных модульных тестах (часть других тестовых случаев).

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