ios – 是否可以在Xcode 7自动UI测试中存根HTTP请求?

ios – 是否可以在Xcode 7自动UI测试中存根HTTP请求?,第1张

概述我一直试图在 Xcode 7自动UI测试中拦截和存根/模拟HTTP请求,使用像 OHHTTPStubs这样的工具,没有运气. 以下是我尝试在UI测试文件的setUp方法中使用OHHTTPStubs捕获任何HTTP请求的示例: override func setUp() { super.setUp() let matcher: OHHTTPStubsTestBlock = { (reque 我一直试图在 Xcode 7自动UI测试中拦截和存根/模拟http请求,使用像 OHHTTPStubs这样的工具,没有运气.

以下是我尝试在UI测试文件的setUp方法中使用OHhttpStubs捕获任何http请求的示例:

overrIDe func setUp() {  super.setUp()  let matcher: OHhttpStubsTestBlock = { (request) -> Bool in    return true  }  OHhttpStubs.stubRequestsPassingTest(matcher) { (response) -> OHhttpStubsResponse! in    return OHhttpStubsResponse.init()  }}

有没有关于UI测试的工作方式可以防止这种情况?有没有人能够实现这一目标?

解决方法 正如Martijn正确指出的那样,由于UI测试的工作方式,您无法在运行时直接与应用程序进行交互,因此任何http模拟或 *** 作XCUITestCase中的NSUserDefaults都不会影响您的应用程序.

如果你真的需要能够模拟http或设置&为特定的UI测试拆分您的应用程序环境,您需要在XCUITestCase的setUp()方法中启动应用程序之前设置启动参数或启动环境变量,然后修改您的应用程序代码以读取启动参数或环境变量并引导测试环境.

示例TestCase

class MyTestCase: XCTestCase {  /**  Called before each test in this test case.  */  overrIDe func setUp() {    super.setUp()      let app = XCUIApplication()      app.launchArguments = [ "STUB_http_ENDPOINTS" ]      app.launch()  }}

示例AppDelegate

func application(application: UIApplication,dIDFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {#if DEBUG  if (nsprocessInfo.processInfo().arguments.contains("STUB_http_ENDPOINTS")) {    // setup http stubs for tests  }#endif  return true}

注意:为了在此示例中使用类似OHhttpStubs的http模拟框架,您需要使用的存根代码和任何JsON装置都需要位于您的应用目标中,而不是测试目标.

这是一个非常有用的线程来阅读这个主题:https://github.com/AliSoftware/OHHTTPStubs/issues/124

总结

以上是内存溢出为你收集整理的ios – 是否可以在Xcode 7自动UI测试中存根HTTP请求?全部内容,希望文章能够帮你解决ios – 是否可以在Xcode 7自动UI测试中存根HTTP请求?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1105617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存