2016-05-31 73 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