2013-05-08 3 views
0

OCMock을 사용하여 실험하고 있지만 지금까지 간단한 실험이 실패했습니다. 나는 다음과 같은 테스트 케이스를 호출 할 때아주 간단한 기본 OCMock 스텁이 작동하지 않습니다.

@interface HTTPConnection : NSObject <NSURLConnectionDelegate> 
@property (strong, nonatomic) NSURLConnection *connection; 
-(int) makeConnection:(NSString*) url; // implementation returns 5 
@end 

, 결과 변수 (5) (15) 따라서 실제 객체 메소드 호출있어하지 포함되지 모의 한 :

- (void)testExample 
{ 
    id connection = [OCMockObject mockForClass:[HTTPConnection class]]; 
    [[[connection stub] andReturn: [NSNumber numberWithInt: 15]] makeConnection:[OCMArg any]]; 

    HTTPConnection* realConnection = [[HTTPConnection alloc] init]; 
    int result = [realConnection makeConnection:@"http://www.anything.com"]; 
} 
내가 조롱하려는이 실험 수업을 감안할 때

답변

2

첫째,의 NSNumber를 반환하는 것은 작동하는지 확실하지 않다 그 방법을 스텁, 그래서 나는 다음과 같은 사용합니다 : 코드에서

id connection = [OCMockObject mockForClass:[HTTPConnection class]]; 
int value = 15; 
[[[connection stub] andReturnValue:OCMOCK_VALUE(value)] makeConnection:[OCMArg any]]; 

둘째, 당신은 [realConnection makeConnection:@"http://www.anything.com"] 할 때, 당신은 n은 stubbed 메소드를 호출하지만 실제 구현은 아닙니다. 당신은 당신의 목 객체를 사용한다 : 당신이 부분 모의를 할 경우에,

int result = [connection makeConnection:@"http://www.anything.com"]; 

또는 (그것이 나 그 보인다 것은 당신을 위해 무엇을 찾고 있습니다) :

HTTPConnection* realConnection = [[HTTPConnection alloc] init]; 
id partialConnection = [OCMockObject partialMockForObject:realConnection]; 
int value = 15; 
[[[partialConnection stub] andReturnValue:OCMOCK_VALUE(value)] makeConnection:[OCMArg any]]; 

int result = [realConnection makeConnection:@"http://www.anything.com"];