gpt4 book ai didi

symfony - 用phpunit单元测试一个symfony服务类

转载 作者:行者123 更新时间:2023-12-04 03:59:48 24 4
gpt4 key购买 nike

我在目录GenericHelper.php中有一个基本类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对该类进行单元测试;我有以下代码(类似于 http://symfony.com/doc/2.0/book/testing.html#unit-tests):
    namespace Foo\BarBundle\Tests\Helper;

use Foo\BarBundle\Helper\GenericHelper;

class GenericHelperTest extends \PHPUnit_Framework_TestCase {

public function testSomeMethod() {
$helper = new GenericHelper(); //line 10
$this->assertEquals($helper->someMethod(), SOME_RESULT);
}
}

运行PHPUnit会导致以下错误:
    PHP Fatal error:  Class 'Foo\BarBundle\Helper\GenericHelper' not found in /DIR/src/Foo/BarBundle/Tests/Helper/GenericHelperTest.php on line 10

摸索“GenericHelper”只会产生一些结果:
  • 类本身和Test类
  • services.yml文件
  • appDevDebugProjectContainer中的
  • app/cache/dev/文件,这些文件具有所有服务获取程序

  • 问题:
  • Symfony是否阻止PHPUnit直接构造服务类?
  • 是否可以在不创建Symfony容器然后访问服务的情况下执行此操作(如此处所做的操作:Access Symfony 2 container via Unit test?)?我的意思是,它仍然只是基础课...
  • 最佳答案

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

    关于symfony - 用phpunit单元测试一个symfony服务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9621016/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com