phpunit: исправляемая фатальная ошибка при тестировании

#php #zend-framework #phpunit

#php #zend-framework #phpunit

Вопрос:

Я работаю над Zend framework, я все настроил, но при модульном тестировании я получаю фатальную ошибку:

c:xampphtdocszendmoduleAlbumtest > phpunit PHP Catchable фатальная ошибка: исправление 1, переданное в Zend ServiceManager ServiceManager::__construct() должно иметь тип array, объект задан, вызывается в C:xampphtdocszendmoduleAlbumtestBootstrap.php в строке 53 и определяется в c:xampphtdocszendvendorframeworkzend-servicemanagersrcServiceManager.php в строке 144

Bootstrap.php Строка 52-58:

     $config = ArrayUtils::merge($baseConfig, $testConfig);
    $serviceManager = new ServiceManager(new ServiceManagerConfig());
    $serviceManager->setService('ApplicationConfig', $config);
    $serviceManager->get('ModuleManager')->loadModules();

    static::$serviceManager = $serviceManager;
    static::$config = $config;
  

ServiceManager.php Строка 144-148:

   public function __construct(array $config = [])
    {
       $this->creationContext = $this;
       $this->configure($config = []);
    }
  

Пожалуйста, какой-нибудь совет???

Ответ №1:

 $serviceManager = new ServiceManager(new ServiceManagerConfig());
  

Задание 1, переданное в Zend ServiceManagerServiceManager::__construct(), должно иметь тип array, объект задан

Ошибка сообщает вам, что ServiceManager в качестве аргумента ожидается массив. Передаваемый вами аргумент new ServiceManagerConfig() , который является объектом .

Это несоответствие версии.

В zendframework/zend-servicemanager ~2.0 ServiceManager конструкторе требуется объект.

В zendframework/zend-servicemanager ~3.0 ServiceManager конструкторе требуется массив.

Если вы используете приложение zf skeleton, убедитесь, что вы используете правильную версию.

Комментарии:

1. Спасибо за ваш ответ… итак, что мне нужно изменить, чтобы исправить это несоответствие??

2. Если вы используете composer, убедитесь, что для него требуется нужная вам версия. Похоже, вам, вероятно, нужна версия ~ 2.0, но это действительно зависит от вашего проекта.

3. Я выполнил эти шаги, и я не могу выяснить, где я ошибся framework.zend.com/manual/2.0/en/user-guide/unit-testing.html

4. Убедитесь, что вы читаете последнюю версию документации для версии framework.zend.com/manual/2.4/en/user-guide/overview.html . Каким-то образом вам удалось установить версию 3 zend-servicemanager, когда документы, похоже, основаны на версии 2.