인스턴스의 속성에 기대치를 설정하려면 어떻게해야합니까?OCMock : 속성에 대한 기대치 설정
의 나는 다음과 같은 코드가 있다고 가정 해 봅시다 :
id request = OCMClassMock([NSMutableURLRequest class]);
을 그리고 난 내 구현에서 HTTPMethod 속성이 @"Get"
로 설정되어 있는지 확인하려면 어떻게 내 테스트가이를 확인까요? 이 같은
인스턴스의 속성에 기대치를 설정하려면 어떻게해야합니까?OCMock : 속성에 대한 기대치 설정
의 나는 다음과 같은 코드가 있다고 가정 해 봅시다 :
id request = OCMClassMock([NSMutableURLRequest class]);
을 그리고 난 내 구현에서 HTTPMethod 속성이 @"Get"
로 설정되어 있는지 확인하려면 어떻게 내 테스트가이를 확인까요? 이 같은
시도 뭔가 :
- (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"
때까지 실패합니다, 나는 당신이 원하는 무엇을 생각합니다.
그것은 엄청난 도움이되었습니다. 이것은 Obj-C/TDD에서의 첫 번째 실제 시도입니다. 저는 C# (그리고 Moq과 같은 도구입니다.)에서이 세상의 구문에 익숙해 지려고 노력하고 있습니다. 많이 감사합니다, 내 친구. – csano
단순히 'NSMutableURLRequest'의 실제 인스턴스를 전달하고 올바른 HTTP 메소드가 설정되어 있다고 주장하지 않는 이유는 무엇입니까? – Alfonso
@ Fönsi에 동의합니다. NSURLConnection을 조롱하는 것을 고려해보십시오. 그러나 요청을 실제 객체로 남겨 두겠습니다. –
그런 경우 조롱 된 NSURLConnection에 전달되는 NSMutableURLRequest 객체를 확인하려면 어떻게해야합니까? 나는 어떤 종류의 콜백을 통해 이렇게합니까? – csano