让我解释一下自己。如何对单元测试循环对象的函数?
function insertObjects($objs) {
foreach ($objs as $obj) {
$this->repository->insert($obj);
}
}
我不想测试插入数据库的工作,因为我认为它工作(这是一个不同的单位)。我也不想测试foreach,因为显然foreach会起作用。所以这里唯一要测试的是$ objs是一个格式良好的数组。但是如果$ objs是我将要传入的模拟数据......那么这是否意味着没有什么可以测试这个函数呢?
我猜存储库是'insertObjects'的外部依赖项方法,因此您可以测试'Repository :: insert()'方法是否被称为_n_(数组大小)次。 – Crozin 2014-10-03 06:25:40
我喜欢这个想法,但在实践中感觉非常多余。如果我有一个n项的数组,并且我在foreach循环中遍历它们,那么它当然会被调用n次。假设构造(foreach)是一个已经进行过单元测试的独立单元。 – allenylzhou 2014-10-03 06:29:25
你需要模拟'$ this-> repository'。首先你应该阅读[嘲笑](https://phpunit.de/manual/current/en/test-doubles.html)。如果您还有其他问题,我可以帮助 – hek2mgl 2014-10-03 06:30:22