Модульное тестирование Zend Framework 2 с использованием CodeCeption

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

Кто-нибудь проводил модульное тестирование в проекте Zend Framework 2 с использованием CodeCeption? И если да, то как вы настроили среду?


person Janis Peisenieks    schedule 23.10.2014    source источник


Ответы (2)


Нашел это в документах codeception: http://codeception.com/docs/modules/ZF2

В этом проекте github есть пример: https://github.com/Danielss89/zf2-codeception

person Achim    schedule 23.10.2014
comment
Спасибо! Это то, что я использовал для решения этой проблемы. Пример проекта был ОЧЕНЬ полезен! - person Janis Peisenieks; 28.10.2014
comment
Глядя на этот пример проекта github. Что этот модульный тест... тестирует? Он тестирует фиктивные объекты. Он не проверяет код. Он не обращается к модулю или чему-то еще. Это не полезный пример. Кроме того, в документе о кодировании ZF2 ничего не говорится о модульном тестировании. Он содержит длинный список методов доступа к страницам через браузеры, такие как amOnPage и canSee. Извините, что написал это в отчаянии, но это мне не помогло. - person dudeman; 09.07.2015

Я решил эту проблему с помощью PHPUnit. Я следовал руководству Zend PHPUnit, http://framework.zend.com/manual/current/en/tutorials/unittesting.html, который до сих пор меня только подводил. Но я смог загрузить Zend, используя файл phpunit.xml и указав его на _bootstrap.php. Codeception также может запускать мои тесты с помощью файла _bootstrap.php. Итак, теперь я могу запускать свои тесты, используя оба:

phpunit --bootstrap тесты/unit/_bootstrap.php

а также

Модуль запуска php vendor/bin/codecept

Я был удивлен, увидев, как мало примеров для этого. Я писал тесты для клиента очереди заданий. Вот немного моего теста:

protected function setUp()
{

    $this->serviceManager = new ServiceManager(new ServiceManagerConfig());
    $config = Bootstrap::getConfig();        

    $this->serviceManager->setService('ApplicationConfig', $config);
    $this->serviceManager->get('ModuleManager')->loadModules();

    $this->client = $this->serviceManager->get('jobclient');
    $this->client->addServers(array(array('ip' => '127.0.0.1', 'port' => '666')));
}

public function testServiceCreateSuccess() {

    $this->client->setQueue($this->testData['queue']);

    $this->assertEquals($this->client->getQueue(), $this->testData['queue'], 'We get the expected queue');
}

Я издевался над клиентом задания и имел локальную конфигурацию. Мой файл _bootstrap.php выглядит в основном так же, как пример Zend, за исключением того, что я использую фабрики, определенные в конфигурации службы, для управления некоторыми объектами. Итак, я выполнил метод «setService» в тестовой настройке, а не в инициализации начальной загрузки.

person dudeman    schedule 24.07.2015