1

使用 Symfony\Bundle\FrameworkBundle\Test\WebTestCase,我们可以轻松访问容器、实体管理器等。我们可以通过自动手动 HTTP 请求将其用于功能测试。

我们是否也可以使用它来测试 Symfony2 控制台命令,以便我们可以轻松访问容器和所有服务?

我想测试我的 costum Symfony2 控制台命令,它使用许多服务,而这些服务又使用理论实体管理器来访问数据。

PHPUnit_Extensions_Database_TestCasePHPunit 文档建议使用,扩展测试类

我们可以扩展WebTestCase而不是测试来测试控制台命令吗?

我已经推荐过了

4

1 回答 1

4

WebTestCase用于功能测试您的 Web 应用程序。没有什么能阻止你使用它来测试命令,但感觉不对(因此你的问题)。

测试命令

请记住,命令测试(以及控制器测试)不应该很复杂,就像您放入的代码也不应该很复杂一样。

将您的命令视为控制器,使它们变得纤细,并将您的业务逻辑放在它所属的位置 - 模型中。

访问容器

话虽如此,您可以自己实现自己的KernelAwareTestCase(或ContainerAwareTestCase)。这是我偶尔使用的基类:jakzal / KernelAwareTest.php Gist

另外,请注意旁边Symfony\Component\Console\Application有一个Symfony\Bundle\FrameworkBundle\Console\Application可以与 Symfony 内核一起工作的。

最后说明

请记住,最广泛的测试应该在单元级别进行。

于 2013-08-10T13:02:50.837 回答