以下是我尝试在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请求?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)