在我的PHPUnit测试中,我有一个私有类:
$fakePayStubViewManager = $this->prophesize(PayStubViewManager::class);
$this->client->getContainer()->set(PayStubViewManager::class, $fakePayStubViewManager->reveal());
我得到的错误:
“PayStubsCore\PayStubGeneratorBundle\Manager\PayStubViewManager”服务是私有的,您不能替换它。prophesize()
方法已弃用。
我无法找到一个合适的方法来替换逻辑。我试着用存根,也需要一个reveal()
方法的替代品。
有没有人遇到过类似的问题,可以帮助我解决这个问题。谢谢
1条答案
按热度按时间3vpjnl9f1#
symfony docs声明:
如果您需要测试已删除的私有服务(未被任何其他服务使用的服务),则需要在config/services_test.yaml文件中将这些私有服务声明为public。
它们描述的是从容器中删除的服务,因为它们没有被使用。但是同样的道理也适用于你的用例。
默认情况下,所有服务都被认为是私有的,您可以在
services_test.yml
中将它们全部转换为公共服务,或者只转换单个服务。