2010-04-27 141 views
1

我的系统中有很多实现PHP SPL Iterator接口的对象。是否有任何测试PHP SPL接口的开源SimpleTest测试用例

当我写他们我也写测试。

我知道,写作测试通常不是一个切割'粘贴工作。但是,当涉及到实现标准PHP库接口的测试类时,确实有一些脚本片段可以借用并放入Test类中 - 纯粹是为了测试该特定接口。

将这些公开提供似乎是明智的。所以,我想知道你是否知道?

+0

更新。我发现[这篇文章](http://www.giorgiosironi.com/2009/09/practical-testing-in-php-part-2-write.html),虽然没有回答这个问题,但它确实提供可以在一个可迭代对象上运行的几种类型的测试。这是鼓舞人心的。 – 2013-07-02 19:57:39

回答

0

一个快速和肮脏的伎俩嘲讽的迭代器就是去购买使用模仿对象的ArrayIterator并使用它作为你的模拟迭代

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

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

这是一个有点臭,但比嘲讽所有的SPL迭代器更简单方法。

+0

谢谢肯,这是一个有用的信息。然而,这更多的是测试一个*使用迭代器的对象,而不是测试一个实现迭代器接口的对象的方法。仍然非常方便 - 非常感谢。 – 2010-06-16 17:33:29

+0

对不起JW,我误解了你的问题。至于测试实现Iterator的对象,是不是一个简单的foreach能做到这一点? – Ken 2010-06-17 07:50:48

+0

没有probs - 我总是很高兴看到答案。关于'foreach'我不认为这会给出真正的考验。从内存来看,foreach将会在非迭代器兼容的变量上“工作”,因此循环内的任何测试都可能永远无法到达。我设法测试了界面 - 所以它没有太多的问题。但是,这似乎是以前很多人可能在那里的情况,所以假设可能有一个现成的解决方案。 – 2010-06-18 12:56:44

相关问题