2014-01-30 8 views
1

GET 요청을하는 메소드를 테스트하고 싶습니다.OCMock 또는 OCMockito를 사용하여 NSURLProtocol mock에 대한 메소드 호출을 검증하려면 어떻게해야합니까?

는 여기에 인위적인 예입니다 :

- (void)GET:(NSString *)URLString; 

오히려이 방법의 구현 세부 사항 (예 : 종속성을 확인 후 기대치를 설정, 조롱 등), 난 그냥 테스트 할 수 있도록 원합니다에 대한 걱정보다는 GET 요청이 이루어진 경우.

나는 이것을 NSURLProtocol으로 할 수 있다고 믿지만 지금까지의 시도는 실패했다. OCMock을 사용하여 예를 들어

:

id mockURLProtocol = (NSURLProtocol *)[OCMockObject mockForClass:[NSURLProtocol class]]; 
[NSURLProtocol registerClass:mockURLProtocol]; 

[[mockURLProtocol expect] canInitWithRequest:[OCMArg any]]; 

[MYClass GET:@"test"]; 

[mockURLProtocol verify]; 
[mockURLProtocol stopMocking]; 
[NSURLProtocol unregisterClass:mockURLProtocol]; 

위의 테스트는 canInitWithRequest가 호출되지 않기 때문에 실패합니다.

NSURLProtocol에서 요청이 수행되고 있는지 확인하려면 어떻게해야합니까?

+0

명확히하기 위해 위의 내용은 시작점 일 뿐이며 예상 한 요청이 실제로 이루어 졌는지 확인하기 위해 더 많은 작업을해야한다는 것을 알고 있습니다. –

+0

클래스의 GET 메소드 코드는 무엇입니까? –

+0

현재 AFNetworking을 사용하고 있지만,이 방법 내에서 실제로 무슨 일이 일어나고 있는지 신경 쓰지는 않습니다. –

답변

0

조롱 NSURLProtocol은 나에게 의미가 없습니다. NSURLProtocol은 테스트에서 특정 요청에 대한 미리 준비된 응답을 작성하는 데 사용되므로 조롱 할 필요가 없습니다 (시스템이 시스템과 상호 작용하는 방식을 테스트하지 않으려는 경우). This project은 NSURLProtocol을 사용하므로 NSURLConnectionDelegate 구현을 직접 테스트하는 순수한 단위 테스트 대신이 접근법을 사용하려는 경우에 유용 할 수 있습니다.