我有一个依赖第三方服务的应用程序。为了确保应用程序正常运行,我想模拟第三方服务并确保应用程序按预期工作。
这要求我能够在创建请求之前配置模拟服务。但是,我无法这样做。
请考虑以下代码:
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'控制器依赖于我无法访问的服务。当我从容器访问服务时,我从客户端请求使用的实例获得了不同的实例。
有没有办法解决这个问题?
答案 0 :(得分:2)
如果我正确理解你,这就是你需要的: https://github.com/PolishSymfonyCommunity/SymfonyMockerContainer