간단한 질문 :모든 기대를 제거하고 SimpleTest에서 모의 객체를 재설정하는 방법이 있습니까?SimpleTest 모의 객체 : 예상 지우기
긴 설명 :
나는 SimpleTest를 사용하여 테스트하고 있는데 그것을 사용하는 모의 객체 몇 가지 문제가 있습니다 클래스를 가지고있다.
클래스는 Logger
이고 로커 내에는 Writer
개의 객체 (FileWriter
, EmailWriter
등)가 있습니다. Logger::log()
메서드를 호출하면 장면 뒤에서 논리를 수행하고 메시지를 올바른 작성기로 라우팅합니다. 작성기는 Logger 클래스에 캐싱되어 매번 다시 인스턴스화하지 않습니다.
내 단위 테스트에서 Logger를 설정하고 모의 작성기 객체를 만들고 추가 한 다음 MockDBWriter->expectOnce()
과 같은 메소드를 사용하여 Logger가 작동하는지 테스트합니다.
이제 문제는 Logger의 다른 기능을 테스트하려고하지만, expectOnce
기대치가 여전히 유효하고 후속 테스트가 실패하는 것입니다.
function testWritesMessageOK() {
$log = Logger::getInstance();
$mock = new MockFileWriter($this);
$log->addWriter($mock);
$mock->expectOnce("write", "Message");
$log->write("Message"); // OK
}
// this is just an example - the actual test is much less inane
function testNumberOfWrites() {
$log = Logger::getInstance();
$mock = $log->getWriter();
$mock->expectCallCount('write', 2);
$log->write("One"); // fail - it doesn't match "Message"
$log->write("Two");
}
모의 개체를 재설정하여 모든 기대치를 제거 할 수있는 방법이 있습니까?