我有一个带有FOSRestBundle的Symfony 2应用程序。遵循标准设计指南,我尽快脱离框架。我的控制器方法如下:
public function getFooBarAction() {
$service = Factory::newWithConnection( $this->get( 'database_connection' ) )->newFooBarService();
return $this->handleView( $this->view( $service->doStuff() ) );
}
Factory
是我应用的顶级工厂。我的集成测试都构建了一个内存sqlite数据库,将我的应用程序表安装到其中并使用它创建Factory
的实例。这是由
$testFactory = TestEnvironment::newInstance()->getFactory();
这意味着我使用数据库的所有测试都只有测试明确添加的可用数据,并且测试仍然完全相互隔离。
现在我想添加一些系统测试,以确保我的API端点的参数处理正常工作。我可以创建源自WebTestCase
的测试类,然后通过$client
获得static::createClient()
。然而,然后使用Symfony DI机制返回的数据库。我可以通过config_test.yml
将其更改为内存sqlite,但这并不能让我真正隔离测试。
我可以执行getNewSymfonyApplication( $myNewConnection )->createClient()
之类的操作吗?