在测试中注入依赖项

时间:2019-09-30 17:52:46

标签: php symfony

我对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页面上搜索失败。

如果不清楚,请评论我,我会澄清。

1 个答案:

答案 0 :(得分:0)

PHPUnit提供了内置的模拟,我怀疑Symfony是否能够自动为您的测试注入模拟,因为它不知道断言应该是什么。

$mockLogger = $this->createMock(LoggerInterface::class);
$mockLogger->expects($this->at(0))
    ->method("error")
    ->with("An error occurred");
$messageManage = new MessageManage($mockLogger);