我该如何对这种代码进行单元测试?

时间:2011-08-12 20:49:20

标签: unit-testing

假设我正在执行以下操作,并且我想测试以确保使用正确的Letter初始化每个$data

public someMethod()
{
    for ($i = 0; $i < 5; $i++)
    {
        $letter = new Letter($data);
        $letter->send();
    }
}

我想指出的主要问题是someMethod()调用中完全封装了5个字母。他们永远不会离开方法的范围,所以我无法测试返回值,并且有多个,所以依赖注入似乎不是一个选项。

1 个答案:

答案 0 :(得分:4)

可以使用依赖注入:

public someMethod($letterFactory)
{
    for ($i = 0; $i < 5; $i++)
    {
        $letter = $letterFactory->create($data);
        $letter->send();
    }
}

(伪代码,因为我不确定这应该是什么语言。)

然后,您的单元测试可以提供$letterFactory的模拟实现,它会生成模拟Letter个对象。