我是EWZSearchBundle的用户,想要更新它以使用Symfony 3.x
更新composer.json
文件应该很简单,但我没有设法让单元测试运行。
这是我的捆绑包的链接,包含一些"改进":link to commit
当我运行phpunit测试时,我收到以下错误:
$ vendor/bin/phpunit Tests/Lucene/FieldTest.php
PHPUnit 5.7.26 by Sebastian Bergmann and contributors.
PHP Fatal error: Call to undefined method Zend\Search\Lucene\Document\Field::getType() in /tmp/azine/EWZSearchBundle/Tests/Lucene/FieldTest.php on line 18
PHP Stack trace:
PHP 1. {main}() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/phpunit:52
PHP 3. PHPUnit_TextUI_Command->run() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/TextUI/Command.php:116
PHP 4. PHPUnit_TextUI_TestRunner->doRun() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/TextUI/Command.php:186
PHP 5. PHPUnit_Framework_TestSuite->run() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:517
PHP 6. PHPUnit_Framework_TestCase->run() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/Framework/TestSuite.php:733
PHP 7. PHPUnit_Framework_TestResult->run() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/Framework/TestCase.php:868
PHP 8. PHPUnit_Framework_TestCase->runBare() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/Framework/TestResult.php:686
PHP 9. PHPUnit_Framework_TestCase->runTest() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/Framework/TestCase.php:913
PHP 10. ReflectionMethod->invokeArgs() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/Framework/TestCase.php:1062
PHP 11. EWZ\Bundle\SearchBundle\Tests\Lucene\FieldTest->testGetType() /tmp/azine/EWZSearchBundle/vendor/phpunit/phpunit/src/Framework/TestCase.php:1062
重现的步骤:
$ git clone git@github.com:azine/EWZSearchBundle.git
$ cd EWZSearchBundle
$ composer install
$ vendor/bin/phpunit Tests/Lucene/FieldTest.php
此错误的原因是,EWZ\Bundle\SearchBundle\Lucene\Field
类没有(正确)自动加载,但Zend\Search\Lucene\Document\Field
目录中的vendor
是自动加载但没有方法
有谁可以告诉我为什么从根目录自动加载命名空间EWZ\Bundle\SearchBundle
中的类不起作用?
非常感谢所有帮助。
答案 0 :(得分:2)
该类已正确自动加载。问题在于代码本身。
当您按代码
启动describe('get the foo', function () {
it('validate getFeaturedProducts get request with storeid', function (done) {
this.timeout(10000) // 10 second timeout only for this test
// assertions
})
})
时
$binaryField
结果是$binaryField = Field::Binary('Binary', 'value');
类,而不是\Zend\Search\Lucene\Document\Field
。
因为它执行
\EWZ\Bundle\SearchBundle\Lucene\Field
内部
return new self($name, $value, '', true, false, false, true);
,这会运行\Zend\Search\Lucene\Document\Field
的构造函数,而不是扩展类。