也许我错过了什么......呃,我想是的,但是找不到答案。
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
类?
答案 0 :(得分:1)
WebTestCase用于PHPUnit(与Symfony及其依赖注入无关)的上下文中。
他们实际上生成了内核及其容器,请参阅从Symfony source code中提取的这段代码:
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()
即可用。