2010-04-27 4 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)를 발견했는데, 질문에 대답하지는 않지만 반복 가능한 객체에서 실행할 수있는 몇 가지 유형의 테스트를 제공합니다. 어느 것이 고무적입니다. –

답변

0

반복자를 조롱하기위한 신속하고 더러운 트릭은 mock 객체와의 ArrayIterator을 재고하고 약간 냄새의

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

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

당신의 모의 반복자로 그것을 사용하지만, 모든 SPL Iterator를 조롱하는 것보다 더 간단합니다 행동 양식.

+0

감사합니다 켄, 유용한 정보 중 하나입니다. 그러나 이것은 반복자 인터페이스를 구현하는 객체를 테스트하는 것이 아니라 반복자를 사용하는 객체를 테스트하는 방법입니다. 여전히 매우 편리합니다 - 감사합니다. –

+0

미안 JW, 나는 당신의 질문을 잘못 읽었습니다. 지금까지 Iterator를 구현하는 객체를 테스트하는 것만으로도 간단한 작업이 이루어지지 않을까요? – Ken

+0

probs 없음 - 나는 항상 답변을보고 기쁘게 생각합니다. 'foreach'와 관련하여 나는 그것이 진정한 테스트를 줄 것이라고 생각하지 않습니다. 메모리에서 foreach는 반복기가 아닌 변수에서 '작동'하므로 루프 내부의 모든 테스트에 도달하지 못할 수 있습니다. 나는 인터페이스를 테스트 할 수 있었다. 그래서 그다지 문제는 아니다. 그러나 이것은 많은 사람들이 전에 거기에 있었을 가능성이있는 상황처럼 보였으므로, 그곳에는 off-the-shelf solution이 있다고 가정합니다. –