1

我的系统中有很多对象实现了 PHP SPL 迭代器接口。

当我写它们时,我也写测试。

我知道编写测试通常不是剪切粘贴的工作。

但是,当涉及到测试实现标准 PHP 库接口的类时,肯定有一些可以借用并放入测试类的脚本片段是有意义的——纯粹是为了测试那个特定的接口。

让这些公开可用似乎是明智的。所以,我想知道你知道吗?

4

1 回答 1

0

模拟迭代器的一个快速而肮脏的技巧就是用模拟对象存储一个 ArrayIterator 并将其用作模拟迭代器

$mockIt = new ArrayIterator;
$mockIt->append($mock1);
$mockIt->append($mock2);
$mockIt->append($mock3);

$sut = new SystemExpectingAnIterator($mockIt);
$this->assertTrue($sut->doSomethingWithIterator());

这有点臭,但比模拟所有 SPL 迭代器方法更直接。

于 2010-06-14T10:36:40.360 回答