【问题标题】:XCTestCase with internet connection caseXCTestCase 带互联网连接案例
【发布时间】:2016-05-31 07:21:29
【问题描述】:

我正在编写一个在线和离线功能分离的应用程序。在这些功能中,我使用Reachability 来检查互联网连接,并且对于每种情况(在线/离线),它的工作方式不同。

现在,我被要求为这些业务逻辑编写测试用例。我到处搜索,但似乎没有人关心 iOS 中的测试用例。

我想编写涵盖在线/离线案例的测试用例。在iOS中可以吗?如果有,如何模拟网络连接状态?

更新问题:

我还想介绍从在线切换到离线的案例,反之亦然。应该有办法模拟这种网络连接状态吧?

【问题讨论】:

标签: ios objective-c xctest reachability internet-connection


【解决方案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 测试设置一起被初始化,因此模拟不适用于其属性。我该如何解决这个问题?
  • 您可能需要在单例初始化之前使用方法调配来模拟。
  • 谢谢,我会在测试方法混乱后与您联系。看起来不错。
猜你喜欢
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 2012-01-24
相关资源
最近更新 更多