2014-11-26 4 views
0

인스턴스의 속성에 기대치를 설정하려면 어떻게해야합니까?OCMock : 속성에 대한 기대치 설정

의 나는 다음과 같은 코드가 있다고 가정 해 봅시다 :

id request = OCMClassMock([NSMutableURLRequest class]); 

을 그리고 난 내 구현에서 HTTPMethod 속성이 @"Get"로 설정되어 있는지 확인하려면 어떻게 내 테스트가이를 확인까요? 이 같은

+1

단순히 'NSMutableURLRequest'의 실제 인스턴스를 전달하고 올바른 HTTP 메소드가 설정되어 있다고 주장하지 않는 이유는 무엇입니까? – Alfonso

+0

@ Fönsi에 동의합니다. NSURLConnection을 조롱하는 것을 고려해보십시오. 그러나 요청을 실제 객체로 남겨 두겠습니다. –

+0

그런 경우 조롱 된 NSURLConnection에 전달되는 NSMutableURLRequest 객체를 확인하려면 어떻게해야합니까? 나는 어떤 종류의 콜백을 통해 이렇게합니까? – csano

답변

2

시도 뭔가 :

- (void)testNSURLConnection 
{ 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]]; 
    [request setHTTPMethod:@"POST"]; 

    id connectionMock = OCMClassMock([NSURLConnection class]); 
    OCMStub([connectionMock connectionWithRequest:[OCMArg checkWithBlock:^BOOL(NSMutableURLRequest *request) { 
     XCTAssertTrue([request.HTTPMethod isEqualToString:@"GET"]); 
     return YES; 
    }] delegate:OCMOCK_ANY]); 

    [NSURLConnection connectionWithRequest:request delegate:nil]; 
} 

이 테스트는 변경 사항 @"POST"@"GET" 때까지 실패합니다, 나는 당신이 원하는 무엇을 생각합니다.

+0

그것은 엄청난 도움이되었습니다. 이것은 Obj-C/TDD에서의 첫 번째 실제 시도입니다. 저는 C# (그리고 Moq과 같은 도구입니다.)에서이 세상의 구문에 익숙해 지려고 노력하고 있습니다. 많이 감사합니다, 내 친구. – csano