Mocking 如何在UITesting上存根网络请求

Mocking 如何在UITesting上存根网络请求,mocking,xcode-ui-testing,ui-testing,stubbing,ohhttpstubs,Mocking,Xcode Ui Testing,Ui Testing,Stubbing,Ohhttpstubs,有没有办法存根以Swift编写的UITests的网络请求 我已经安装了OHttpStubs吊舱,但无法通过使用其方法来存根我的网络请求,这是因为UITest目标和应用程序目标在不同的线程中执行 我将感谢您的建议。存根需要在测试代码下的应用程序中完成,而不是在测试代码中完成。这是因为UI测试过程无法控制被测应用程序的网络,因为它们彼此独立 从测试启动应用程序时发送启动参数,并读取应用程序中的启动参数以调用存根,作为应用程序:didFinishLaunchingWithOptions:中应用程序委派

有没有办法存根以Swift编写的UITests的网络请求

我已经安装了OHttpStubs吊舱,但无法通过使用其方法来存根我的网络请求,这是因为UITest目标和应用程序目标在不同的线程中执行


我将感谢您的建议。

存根需要在测试代码下的应用程序中完成,而不是在测试代码中完成。这是因为UI测试过程无法控制被测应用程序的网络,因为它们彼此独立

从测试启动应用程序时发送启动参数,并读取应用程序中的启动参数以调用存根,作为
应用程序:didFinishLaunchingWithOptions:
应用程序委派的一部分

let app = XCUIApplication()
app.launchArguments = ["stub"]
app.launch()

存根需要在被测试的应用程序代码中完成,而不是在测试代码中完成。这是因为UI测试过程无法控制被测应用程序的网络,因为它们彼此独立

从测试启动应用程序时发送启动参数,并读取应用程序中的启动参数以调用存根,作为
应用程序:didFinishLaunchingWithOptions:
应用程序委派的一部分

let app = XCUIApplication()
app.launchArguments = ["stub"]
app.launch()

这里有两个不同的选项:

  • 你可以采用Oletha的方法,触摸应用程序代码中的网络。您必须存根NSURLSession以注入所需的响应,并使用一些启动参数确定何时使用存根会话而不是常规会话。本文中有关如何执行此操作的更多详细信息:

  • 您可以运行本地服务器并直接从测试代码注入数据。最大的优势是你根本不需要触摸你的应用程序代码。您还可以在测试期间轻松更改响应,这在第一个解决方案中是不可能的

  • 要运行本地服务器,您有几个选项。我正在使用,但还有其他选择:和

    无论您选择何种解决方案,一般流程如下:

    • 传递启动参数以标识您正在运行UITests
    • 应用程序:didFinishLaunchingWithOptions:
      中捕获该启动参数,并将API基本URL切换到本地服务器:
    • 启动服务器
    • 为正在测试的URL注入响应

    您在

    中有一个更详细的方法您在这里有两个不同的选项:

  • 你可以采用Oletha的方法,触摸应用程序代码中的网络。您必须存根NSURLSession以注入所需的响应,并使用一些启动参数确定何时使用存根会话而不是常规会话。本文中有关如何执行此操作的更多详细信息:

  • 您可以运行本地服务器并直接从测试代码注入数据。最大的优势是你根本不需要触摸你的应用程序代码。您还可以在测试期间轻松更改响应,这在第一个解决方案中是不可能的

  • 要运行本地服务器,您有几个选项。我正在使用,但还有其他选择:和

    无论您选择何种解决方案,一般流程如下:

    • 传递启动参数以标识您正在运行UITests
    • 应用程序:didFinishLaunchingWithOptions:
      中捕获该启动参数,并将API基本URL切换到本地服务器:
    • 启动服务器
    • 为正在测试的URL注入响应

    你在

    中有更详细的方法请看这篇文章请看这篇文章有人能访问更快的文章吗?有人能访问更快的文章吗?