我对symfony比较陌生。现在,我写了一个库,一个装饰类,我想测试一下。
名为MessageHtmlDecorator->decorateByKey
的类正在等待MessageManage
对象。 MessageManage
需要注入Logger
类。这是一个简单的案例。
这些类不是服务,只是简单的实用程序/库!
所以我喜欢创建一个像这样的测试:
public function testDecorateByKey()
{
$messageManage = new MessageManage();
$htmlMessageDecorate = new HtmlMessageDecorate();
$this->assertEquals('<p>First error message</p>', $htmlMessageDecorate->decorateByKey($messageManage, 'error'));
}
MessageManage
构造函数:
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
我该如何MessageManage
自动注入记录器?
所以我要实现的是让依赖注入与symfony项目中的注入相同。
我尝试在symfony页面上搜索失败。
如果不清楚,请评论我,我会澄清。
答案 0 :(得分:0)
PHPUnit提供了内置的模拟,我怀疑Symfony是否能够自动为您的测试注入模拟,因为它不知道断言应该是什么。
$mockLogger = $this->createMock(LoggerInterface::class);
$mockLogger->expects($this->at(0))
->method("error")
->with("An error occurred");
$messageManage = new MessageManage($mockLogger);