使用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容器然后访问服务(如此处所做的那样:)?我的意思是,它仍然只是一门基础课
-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