使用Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase,我们可以轻松访问容器,实体管理器等。我们可以通过自动手动HTTP请求将其用于功能测试。
我们是否可以使用它来测试Symfony2控制台命令,以便我们可以轻松访问容器和所有服务?
我想测试我的Costum Symfony2控制台命令,该命令使用许多服务,这些服务又使用学说的实体管理器来访问数据。
PHPunit文档建议使用扩展测试类PHPUnit_Extensions_Database_TestCase
,
我们可以扩展WebTestCase
而不是测试来测试控制台命令吗?
我已经看过
WebTestCase
用于对Web应用程序进行功能测试。没有什么可以阻止您使用它来测试命令,但是感觉不对(因此,您的问题)。
测试命令
请记住,命令测试(以及控制器测试)不应该很复杂,就像您放入其中的代码也不应该很复杂一样。
将您的命令视为控制器,使其变得苗条,并将您的业务逻辑放在模型所属的位置。
进入容器
话虽如此,您可以自己实现自己的KernelAwareTestCase(或ContainerAwareTestCase)。这是我偶尔使用的基类:jakzal / KernelAwareTest.php Gist
另外,请注意,旁边Symfony\Component\Console\Application
有一个Symfony\Bundle\FrameworkBundle\Console\Application
可以与Symfony内核一起实际使用的工具。
最后说明
请记住,最广泛的测试应该在单元级别上进行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句