2016-05-31 72 views
2

我正在編寫一個在線和離線時都有分離功能的應用程序。在這些功能中,我使用Reachability來檢查互聯網連接和每個案例(在線/離線),它做了不同的作品。帶互聯網連接案例的XCTestCase

現在,我被要求爲這些業務邏輯編寫測試用例。我到處都在搜索,但似乎沒有人關心iOS中的測試用例。

我想編寫涵蓋在線/離線案例的測試用例。在iOS中可以嗎?如果是這樣,我該如何模擬互聯網連接狀態?

更新問題:

我也想覆蓋的情況下從網絡切換到離線,反之亦然。應該有一種方法來模擬這種網絡連接狀態,對吧?

+0

這可能會有所幫助:什麼是嘲諷(http://stackoverflow.com/questions/2665812/what-is-mocking),[OCMock(http://ocmock.org)。 – FreeNickname

回答

3

你應該使用OCMock

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

然後發送可達嘲笑返回值手動更改的通知。

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

嗨,對已故的評論抱歉。我有一個靜態單例對象,它持有'Reachability'實例來檢查Internet更改。該對象正在與可用性對象** BEFORE **測試設置一起初始化,因此該模擬對其屬性不起作用。我該如何解決這個問題? – Eddie

+0

您可能需要在單例初始化之前使用方法調試模擬。 – Bing

+0

謝謝,我將在測試方法調整後再與您聯繫。看起來很好。 – Eddie