10

新しい Xcode 7 UI テストにモック データを含めようとした人はいますか?

  • 特定のフレームワークを使用したことがありますか?
  • どのように目標を管理しましたか?
4

1 に答える 1

9

これにアプローチするには多くの方法があると思います。難しいのは、Apple が意図的に UITests をテスト中のアプリとは完全に分離して実行するように設計していることです。とはいえ、アプリ内のロジックとテスト内のロジックを調整して、モック データをフィードしたり、何らかの方法でアプリの動作を変更したりするために使用できるフックがいくつかあります。私が最も便利だと思ったのは と の 2 つlaunchEnvironmentですlaunchArguments

テスト内 -アプリコード内にXCUIApplication().launchArguments対応NSProcessInfo.processInfo().arguments

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

launchEnvironment は単純な辞書ですが、起動引数は配列です。テストでは、アプリを起動する前に、これらのパラメーターのいずれかに好きな値を入力できます。

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 
    }
}

このパターンを使用すると、フェイク/モック データは、アプリ ターゲットのメンバーとして含まれるファイルである必要があります。

于 2015-11-20T00:18:56.053 に答える