2016-05-31 2 views
2

온라인 및 오프라인에서 기능을 구분하는 앱을 작성하고 있습니다. 이 기능에서는 인터넷 연결을 확인하기 위해 Reachability을 사용하며 각각의 경우 (온라인/오프라인)마다 다른 작동을합니다.XCTestCase with internet connection case

이제 이러한 비즈니스 논리에 대한 테스트 사례를 작성해야합니다. 어디에서나 검색했지만 iOS의 테스트 사례는 아무도 신경 쓰지 않는 것으로 보입니다.

온라인/오프라인 사례 모두를 커버하는 테스트 케이스를 작성하고 싶습니다. iOS에서도 가능합니까? 그렇다면 인터넷 연결 상태를 어떻게 시뮬레이트합니까?

업데이트 질문 :

내가 반대의 경우도 마찬가지 오프라인과 온라인에서 전환하는 경우를 포함하고자합니다. 이 네트워크 연결 상태를 시뮬레이트하는 방법이 있어야합니다. 당신은 그런 접근 가능성을 보내

id reachabilityMock = OCMClassMock([Reachability class]); 
[OCMStub([reachabilityMock currentReachabilityStatus]) andReturnValue:@(ReachableViaWiFi)]; 
[OCMStub([reachabilityMock reachabilityForInternetConnection]) andReturn:reachabilityMock]; 
Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
XCTAssertEqual(reachability.currentReachabilityStatus, ReachableViaWiFi); 

OCMock

사용하여 반환 값을 조롱한다

+0

이 도움이 될 수 있습니다 [? 무슨 조롱한다 (http://stackoverflow.com/questions/2665812/what-is-mocking), [OCMock] (http://ocmock.org). – FreeNickname

답변

3

수동으로 알림을 변경했습니다.

[[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: noteObject]; 
+0

안녕하세요, 최근 의견에 사과드립니다. 나는 정적 변경 객체를 가지고 있는데, 이것은 인터넷 변경을 검사 할 수있는'Reachability' 인스턴스를 가지고 있습니다. 이 객체는 도달 가능성 객체 **와 함께 초기화되고 ** 시험 설정 전이므로 모의 객체는 해당 속성과 함께 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? – Eddie

+0

싱글 톤을 초기화하기 전에 조롱하기 위해 swizzling 메서드를 사용해야 할 수도 있습니다. – Bing

+0

감사합니다. 나중에 테스트 방법을 테스트 한 후에 연락을 드리겠습니다. 멋져 보인다. – Eddie