如何将任何服务注入Symfony中的WebTestCase子类?

安德鲁·史米格

也许我想念一些东西……我想是的,但是找不到答案。

WebTestCase 生成此构造函数示例:

public function __construct(?string $name = null, array $data = [], string $dataName = '')
{
     parent::__construct($name, $data, $dataName);
}

试图将我的服务添加为第一个或最后一个参数-Symfony引发错误:

Type error: Too few arguments to function Tests\AppBundle\Manager\ContactManagerTest::__construct(), 0 passed in /Library/WebServer/Documents/HEPT/vendor/bin/.phpunit/phpunit-5.7/src/Framework/TestSuite.php on line 568 and at least 1 expected in /Library/WebServer/Documents/HEPT/tests/AppBundle/Manager/ContactManagerTest.php:22

我应该以某种方式直接使用容器吗?WebTestCase如果存在桥接类,为什么自动装配对不起作用

内克

WebTestCase用于PHPUnit上下文(与Symfony及其依赖注入无关)。

他们实际上生成了内核及其容器,请参见从Symfony源代码中提取的这段代码

protected static function createClient(array $options = array(), array $server = array())
{
    $kernel = static::bootKernel($options);
    $client = $kernel->getContainer()->get('test.client');
    $client->setServerParameters($server);
    return $client;
}

这意味着您可以像这样轻松地访问容器:

$kernel = static::bootKernel($options);
$container = $kernel->getContainer();

另请注意,static::$kernel->getContainer()创建客户端进行测试后,该功能将立即可用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章