OCMock을 사용하는 테스트 케이스로 고민하고 있습니다. 지금까지 나는 OCMock을 몇 가지 프로젝트에서 사용했으며 항상 생각대로 작동합니다. 나는 image
이라는 속성을 설정할 때 [self setNeedsDisplay]
이 호출되는 다음과 같은 메서드를 사용합니다.OCMock이 호출 된 selector를 인식하지 못합니다.
- (void)testSetTapColorCallsDrawRect
{
SMColorButton *button = [[SMColorButton alloc] initWithImage:nil];
id mock = [OCMockObject partialMockForObject:button];
// Exptect setNeedsDisplay.
[[mock expect] setImage:OCMOCK_ANY];
[[mock expect] setNeedsDisplay];
button.image = [UIImage imageNamed:@"Button.png"];
[mock verify];
}
그리고 image
속성의 설정자는 다음과 같습니다.
- (void)setImage:(UIImage *)anImage
{
// Set the image if it changed.
if (anImage != image) {
image = anImage;
[self setNeedsDisplay];
}
}
세터에서 [self setNeedsDisplay]
이 호출됨을 알 수 있습니다. 메소드가 호출되지 않은 것처럼
OCPartialMockObject[SMColorButton]: expected method was not invoked: setNeedsDisplay
것 같습니다 : 나는 테스트를 실행할 때 나는 다음과 같은 오류가 발생합니다. 하지만 breakter setter 메서드를 설정하면 응용 프로그램에서 해당 줄을 중단하고 표시합니다.
나를 도와 줄 수 있습니까? 나는 내가 뭘 잘못하고 있는지 보지 않는다 ...
그게 전부입니다! 고맙다고 생각하지는 않았지만 완전히 논리적입니다. OCMock은 메서드가 호출되었는지 검사합니다. 이제 테스트가 실패/예상대로 실행됩니다. 고맙습니다! –