XCTestCase 带互联网连接案例
Posted
技术标签:
【中文标题】XCTestCase 带互联网连接案例【英文标题】:XCTestCase with internet connection case 【发布时间】:2016-05-31 07:21:29 【问题描述】:我正在编写一个在线和离线功能分离的应用程序。在这些功能中,我使用Reachability
来检查互联网连接,并且对于每种情况(在线/离线),它的工作方式不同。
现在,我被要求为这些业务逻辑编写测试用例。我到处搜索,但似乎没有人关心 ios 中的测试用例。
我想编写涵盖在线/离线案例的测试用例。在iOS中可以吗?如果有,如何模拟网络连接状态?
更新问题:
我还想介绍从在线切换到离线的案例,反之亦然。应该有办法模拟这种网络连接状态吧?
【问题讨论】:
这可能会有所帮助:What is mocking?、OCMock。 【参考方案1】:您应该使用 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];
【讨论】:
嗨,很抱歉迟到的评论。我有一个静态单例对象,它包含一个Reachability
的实例来检查互联网变化。该对象与可达性对象 BEFORE 测试设置一起被初始化,因此模拟不适用于其属性。我该如何解决这个问题?
您可能需要在单例初始化之前使用方法调配来模拟。
谢谢,我会在测试方法混乱后与您联系。看起来不错。以上是关于XCTestCase 带互联网连接案例的主要内容,如果未能解决你的问题,请参考以下文章