提问人:mandark 提问时间:2/10/2015 最后编辑:mandark 更新时间:2/10/2015 访问量:118
如何在Web测试用例中访问客户端请求使用的Symfony服务?
How to access a Symfony service that is used by a client request in a web test case?
问:
我有一个依赖第三方服务的应用程序。为了确保应用程序正常工作,我想模拟第三方服务并确保应用程序按预期工作。
这要求我能够在创建请求之前配置模拟服务。但是,我无法这样做。
请考虑以下代码:
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
//..
class MyTest extends WebTestCase
{
public function testSignupLink()
{
$container = static::createClient()->getContainer();
// This returns a different instance from the one used by the client request
$service = $container->get('third-party-service');
$service->setErrorState(MockService::SOME_ERROR_STATE);
// ...
// The request creates a new instance of the $service internally which doesn't have the error state that was set above
$client->request('POST', '/abc/1');
}
}
“abc”控制器依赖于我无法访问的服务。当我从容器访问服务时,我得到的实例与客户端请求使用的实例不同。
有什么方法可以解决这个问题吗?
答:
2赞
Alexandru Olaru
2/10/2015
#1
如果我理解正确,这就是你需要的: https://github.com/PolishSymfonyCommunity/SymfonyMockerContainer
评论