2013-11-19 3 views
0

Для моего развертывания проекта Zend Framework (v1.12) Im с использованием Phing. Он развертывает front-end и back-end приложения. Все идет отлично, недо Phing начинает испытывать PHPUnit:Phing phpunit "plugin with stackIndex" 1 "уже зарегистрированная" ошибка

<!-- Testing backend -->  
<target name="backend-test" description="Testing backend system"> 
    <phpunit codecoverage="false" haltonerror="true" haltonfailure="true" printsummary="true" bootstrap="${path.build}/${DSTAMP}${TSTAMP}/admin/tests/bootstrap.php"> 
     <batchtest> 
      <fileset dir="${path.build}/${DSTAMP}${TSTAMP}/admin/tests"> 
       <include name="**/*Test.php" /> 
      </fileset> 
     </batchtest> 
     <formatter type="summary" usefile="false" /> 
    </phpunit> 
</target> 

<!-- Testing frontend environment --> 
<target name="site-test" description="Testing frontend system"> 
    <phpunit codecoverage="false" haltonerror="true" haltonfailure="true" printsummary="true" bootstrap="${path.build}/${DSTAMP}${TSTAMP}/site/tests/bootstrap.php"> 
     <batchtest> 
      <fileset dir="${path.build}/${DSTAMP}${TSTAMP}/site/tests"> 
       <include name="**/*Test.php" /> 
      </fileset> 
     </batchtest> 
     <formatter type="summary" usefile="false" /> 
    </phpunit> 
</target> 

Back-конец части PHPUnit тесты успеха, но когда он начинает испытывать передний конец - она ​​не его ошибка:

[phingcall] Plugin with stackIndex "1" already registered [phingcall] #0 /var/www/zend/Controller/Front.php(733): Zend_Controller_Plugin_Broker->registerPlugin(Object(Application_Plugin_ACL), 1) [phingcall] #1 /var/www/_qa/build/201311181711/admin/application/Bootstrap.php(199): Zend_Controller_Front->registerPlugin(Object(Application_Plugin_ACL), 1).......

Любые идеи? Ваша помощь будет оценена по достоинству.

ответ

1

Ваш бутстрап вызывается дважды (или, по крайней мере, ресурс [_init function]).

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

Вы должны попытаться найти способ издеваться над всеми классами periferral, загруженными в ваш bootstrap, и протестировать каждый из этих классов по отдельности.

Другим способом было бы загрузить приложение в метод настройки phpUnit и убедиться, что оно уничтожено при разрыве. Это будет более впечатляющим и скорее всего замедлит ваши тесты, так как весь стек Zend будет инстанцирован, затем убит, а затем повторно создан для каждого из ваших тестовых случаев.

Смежные вопросы