我的系统中有很多对象实现了 PHP SPL 迭代器接口。
当我写它们时,我也写测试。
我知道编写测试通常不是剪切粘贴的工作。
但是,当涉及到测试实现标准 PHP 库接口的类时,肯定有一些可以借用并放入测试类的脚本片段是有意义的——纯粹是为了测试那个特定的接口。
让这些公开可用似乎是明智的。所以,我想知道你知道吗?
我的系统中有很多对象实现了 PHP SPL 迭代器接口。
当我写它们时,我也写测试。
我知道编写测试通常不是剪切粘贴的工作。
但是,当涉及到测试实现标准 PHP 库接口的类时,肯定有一些可以借用并放入测试类的脚本片段是有意义的——纯粹是为了测试那个特定的接口。
让这些公开可用似乎是明智的。所以,我想知道你知道吗?
模拟迭代器的一个快速而肮脏的技巧就是用模拟对象存储一个 ArrayIterator 并将其用作模拟迭代器
$mockIt = new ArrayIterator;
$mockIt->append($mock1);
$mockIt->append($mock2);
$mockIt->append($mock3);
$sut = new SystemExpectingAnIterator($mockIt);
$this->assertTrue($sut->doSomethingWithIterator());
这有点臭,但比模拟所有 SPL 迭代器方法更直接。