使用phpunit对symfony服务类进行单元测试

使用phpunit对symfony服务类进行单元测试,symfony,phpunit,Symfony,Phpunit,我在目录Foo/BarBundle/Helper 我在Foo/BarBundle/Resources/config/services.yml中将其注册为服务: parameters: generic_helper.class: Foo\BarBundle\Helper\GenericHelper services: generic_helper: class: %generic_helper.class% 我可以通过执行以下操

我在目录
Foo/BarBundle/Helper

我在
Foo/BarBundle/Resources/config/services.yml
中将其注册为服务:

    parameters:
       generic_helper.class: Foo\BarBundle\Helper\GenericHelper

    services:
       generic_helper:
           class: %generic_helper.class%
我可以通过执行以下操作在命令中访问它:

    $helper = $this->getContainer()->get('generic_helper');
现在,我想用PHPUnit对该类进行单元测试;我有以下代码(类似于):

运行PHPUnit会导致以下错误:

    PHP Fatal error:  Class 'Foo\BarBundle\Helper\GenericHelper' not found in /DIR/src/Foo/BarBundle/Tests/Helper/GenericHelperTest.php on line 10
对“GenericHelper”进行灰色搜索只会产生一些结果:

  • 类本身和测试类
  • services.yml文件
  • app/cache/dev/
    中的
    appDevDebugProjectContainer
    文件,其中包含所有服务获取程序
问题

  • Symfony是否阻止PHPUnit直接构建服务类
  • 有没有一种方法可以做到这一点,而无需创建Symfony容器然后访问服务(如此处所做的那样:)?我的意思是,它仍然只是一门基础课

运行phpunit时,将
-c
标志指向包含
phpunit.xml.dist
文件的目录,解决了此问题。这样做包括
bootstrap.php.cache
,因此需要进行自动加载。

应该可以,自动加载类可能有问题。你能发布你的
phpunit.xml
文件吗?@Matt我还没有修改symfony附带的
phpunit.xml.dist
文件,但是你的评论帮助了我,不管怎样-用
-c app/
(带dist文件的目录)运行phpunit是可行的。我猜这与中指定的引导文件有关?无论如何,谢谢!是的,因为
bootstrap.php.cache
将包含自动加载的内容。你应该发布你的问题的答案,并在你愿意的时候接受它(我认为你必须等待大约两天)。
    PHP Fatal error:  Class 'Foo\BarBundle\Helper\GenericHelper' not found in /DIR/src/Foo/BarBundle/Tests/Helper/GenericHelperTest.php on line 10