지연을 가지고 다른 메소드를 호출하는 블랙 박스 유닛 테스트를 작성하고 싶습니다. 그것은 좀 다음과 같습니다 kDelay
가 일정하고 doSomethingLater
Objective-C에서 지연된 메소드를 유닛 테스트하기
- (void) doSomething {
// Do something
[self performSelector:@selector(doSomethingLater) withObject:nil afterDelay:kDelay];
}
- (void) doSomethingLater { }
은 비공개입니다. 문제는 kDelay
이 1 초이며 단위 테스트의 실행 속도를 늦추고 싶지 않다는 것입니다.
단위 테스트 doSomething
을 블랙 박스 방식 (또는 가능한 한 많이)하는 가장 좋은 방법은 무엇입니까?
유일한 생각은 클래스에 메서드를 추가하여 kDelay
값을 변경하는 것이지만 다른 개발자가 실수로 사용할 수 있습니다. 덜 침략적 인 대안이 있습니까?
나는 그것이 다른 방식으로 침략 적이라고 말하고 싶습니다. –
이 접근법의 문제점은 어떤 이유로 누군가 다른 사람이 연기 한 performSelector를 지연 시키려고 결정하면 테스트가 느려지고 아무도 이유를 알 수 없다는 것입니다. – hpique
그래도 상상할 수 있으면 좋을 것입니다. – hpique