簡體   English   中英

如何在Xcode 7上模擬UITest中的數據?

[英]How to mock data in UITest on Xcode 7?

有人試圖在新的Xcode 7 UI測試中包含模擬數據嗎?

  • 你使用過特定的框架嗎?
  • 你是如何管理目標的?

我認為有很多方法可以解決這個問題 - 困難在於Apple有意設計了UITests,使其完全獨立於被測試的應用程序。 也就是說,您可以使用一些鈎子來協調應用程序中的邏輯與測試中的邏輯,以提供模擬數據或以任何方式改變應用程序的行為。 這兩個我發現最有用的是launchEnvironmentlaunchArguments

在您的測試中 - XCUIApplication().launchArguments NSProcessInfo.processInfo().arguments對應於應用程序代碼中的NSProcessInfo.processInfo().arguments

同樣: XCUIApplication().launchEnvironment - > NSProcessInfo.processInfo().environment

launchEnvironment是一個直接的字典,而launch參數是一個數組。 在測試中,您可以在啟動應用程序之前將任何您喜歡的值提供給這些參數中的任何一個:

let app = XCUIApplication()
app.launchEnvironment["-FakedFeedResponse"] = "success.json"
app.launch()

然后在您的應用程序邏輯中,您可以根據需要打開這些值。 就像是:

func fetchFeed() -> JSON {
    if let fakedJSONFilename = NSProcessInfo.processInfo().environment["-FakedFeedResponse"] {
        let fakePayload = fakeDataFileNamed(fakedJSONFilename)
        return fakePayload
    } else {
       //Make network call and return a real JSON payload 
    }
}

使用此模式,您的偽造/模擬數據將需要是作為應用目標成員包含的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM