我正在編寫一個可重用的包,並希望對這個包與託管應用程序進行集成測試。問題是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