Я решил эту проблему с помощью 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