나는 X
이라는 클래스와 turtle
이라는 메소드를 가지고 있는데, 단위 테스트를 위해 OCMock과 모방하고 싶습니다. 클래스 T
.모의 객체를 설정하여 카테고리에 정의 된 실제 구현으로 넘어 가게하려면 어떻게해야합니까?
//X.h
@interface X
-(void) turtle;
@end
클래스 T
는 카테고리를 포함 X
와 통신하는 것을 사용한다. 범주 메서드는 turtle
을 호출합니다. 단위 테스트에서
//X+utils.h:
@interface X(Utils)
-(void) catMethod;
@end
//X+utils.m:
@implementation X(Utils)
-(void) catMethod
{
[self turtle];
}
@end
//T.m
#import "X+utils.h"
@implementation T
-(void) useX:(X*) xInstance
{
[xInstance catMethod];
}
, 그것은
turtle
에 대한 호출을 기대하고 내가 설정 모의하도록.
-(void) test
{
id mockX = [OCMockObject mockForClass:[X class]]
[[mockX expect] turtle];
[instanceOfT useX:mockX];
[mockX verify];
}
는 내가 구현 그것을 사용하기 좋아하는 카테고리를 선택할 수있는 자유를주고 싶습니다 때문에, 카테고리의 메소드의 호출을 기대하지 않는 설정을 모의을한다.
OCMock에서 "예기치 않은"호출이 catMethod
으로 걸리므로 호출 useX가 실패합니다.
실제로 범주 구현을 사용하고 실제 인터페이스 X
에 정의 된 모의 호출 만 사용하도록 OCMock을 구성 할 수 있습니까?
OCMock은 귀하의 기대를 확인하기 위해 귀하의 목소리에 대한 확인을 요구합니다 - 귀하의 질문을 편집하셨습니다. – e1985