假设我正在执行以下操作,并且我想测试以确保使用正确的Letter
初始化每个$data
。
public someMethod()
{
for ($i = 0; $i < 5; $i++)
{
$letter = new Letter($data);
$letter->send();
}
}
我想指出的主要问题是someMethod()
调用中完全封装了5个字母。他们永远不会离开方法的范围,所以我无法测试返回值,并且有多个,所以依赖注入似乎不是一个选项。
答案 0 :(得分:4)
可以使用依赖注入:
public someMethod($letterFactory)
{
for ($i = 0; $i < 5; $i++)
{
$letter = $letterFactory->create($data);
$letter->send();
}
}
(伪代码,因为我不确定这应该是什么语言。)
然后,您的单元测试可以提供$letterFactory
的模拟实现,它会生成模拟Letter
个对象。