Skip to content

zend framework 2.4 "Zend\ServiceManager\Exception\ServiceNotFoundException: Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for ApplicationConfig"

We had some controller tests in our test cases and the following error was thrown, after we updated to zend framework 2.4.


Zend\ServiceManager\Exception\ServiceNotFoundException: Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for ApplicationConfig

/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:555 /vendor/zendframework/zendframework/library/Zend/Mvc/Service/ModuleManagerFactory.php:41 /vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:939 /vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:1097 /vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:638 /vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:598 /vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:530 /vendor/zendframework/zendframework/library/Zend/Mvc/Application.php:253 /vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:164 /vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:73 //MyControllerTest.php:124

"MyControllerTest" extends "Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase". What we did to solve the problem was adding the following lines of code in our "setUp" method.

$applicationConfigurationPath = DIR . strrepeat('/..', ) . '/config/application.config.php';
if (!isfile($applicationConfigurationPath)) {
    $message = 'application configuration needed and not found in path "' . $applicationConfigurationPath . '"';

$this->fail($message);

} $applicationConfiguration = require $applicationConfigurationPath; unset($applicationConfiguration['modulelisteneroptions']['configglobpaths']); $applicationConfiguration['modules'] = array();

$this->setApplicationConfig($applicationConfiguration);


Thats it, hope it helps.

Translate to de es fr it pt ja

Easy PHPUnit Test Skeleton with a data provider

<?php class UnitTest extends PHPUnitFrameworkTestCase { public static function providerTestFirst() { return array( array(1, 1), array(2, 2), array(2, 1), ); }

/**
 * @dataProvider providerTestFirst
 *
 * @param array $data 
 */
public function testFirst($expected, $value)
{
    $this->assertEquals($expected, $value, $value . ' should be ' . $expected);
}

}

The skeleton is really simple indeed. And it should trow an error ( 2 != 1).

manual 3.5 manual current

Translate to de es fr it pt ja