我正在编写一个可重用的包,并希望对这个包与托管应用程序进行集成测试。问题是Symfony既没有调用我的包的DependencyInjection\Extension::load
也没有调用DependencyInjection\Configuration::getConfigTreeBuilder
方法,因此bundle的服务配置没有加载,服务也没有正确构建。我如何让Symfony在测试中加载所有内容,就好像它是一个真正的请求?Symfony中的集成测试
这里是我的测试:
namespace Tests\AclAgentBundle;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class IntegrationTest extends KernelTestCase
{
public function testAgentExistence()
{
$container = static::bootKernel()->getContainer();
$service = $container->get('test.Foo\Bar\Baz');
//...assertions...
}
test.Foo\Bar\Baz
是服务的别名,在主机应用程序的配置声明如下
services:
test.Foo\Bar\Baz: '@Foo\Bar\Baz'
用于通过容器在测试get
方法来获取服务。
您是否在内核文件中添加了包? –
@ tokeeen.com是的,我做了 – Sergey