2017-04-05 15 views
0

「FFQuestions」というアプリがあります。私はQA.jsonと呼ばれるローカルjsonファイルを使用します。ユニットテストでのローカルJSONファイルの使用

私は "FFQuestionsTests"フォルダファイルにQA.jsonを使用してファイルを作り直してそのフォルダにドロップする必要はありませんか?それを得るためにコードを変更する必要がありますか?それとも、「FFQuestionsTests」のターゲットメンバーシップを追加するだけの簡単なことですか?

これはロードQA.jsonのための私の方法です...

func loadJSONFromFile() -> [String: Any]? { 
    guard let url = Bundle.main.url(forResource: "QA", withExtension: "json") else {return nil} 
    guard let data: Data = NSData(contentsOf: url) as Data? else {return nil} 

    do { 
     let object = try JSONSerialization.jsonObject(with: data, options: .allowFragments) 
     guard let dictionary = object as? [String: Any] else {return nil} 
     return dictionary 
    } catch { 
     print("Not parsed") 
    } 

    return nil 
} 

はそうであっても、私は...

func loadJSONFromTestsFile() -> [String: Any]? { 
    let testBundle = Bundle(for: type(of: self)) 
    let url = testBundle.url(forResource: "QA", withExtension: "json") 

    guard let data: Data = NSData(contentsOf: url!) as Data? else {return nil} 

    do { 
     let object = try JSONSerialization.jsonObject(with: data, options: .allowFragments) 
     guard let dictionary = object as? [String: Any] else {return nil} 
     print(dictionary) 
     return dictionary 
    } catch { 
     print("Not parsed") 
    } 

    return nil 
} 
を試してみたそれはユニットテストで多少異なる実行する必要かもしれないと思いました

これは私が試したことですが、まだnilのクラッシュが発生しています。

+0

のターゲットメンバーを追加するような単純なものでしたか?どの線?どのようなエラーメッセージですか? –

答えて

1

それはまさにあなたがこの `nil`クラッシュを持っていない「FFQuestionsTests」

+0

単体テストのコードは、最初か2番目のコードですか? FFQuestionsTestのメンバーシップはどういう意味ですか?質問では、FFQuestionsTestはファイルではなくフォルダであると言われています。 – Efren

+0

@Efrenコードが最初と2番目です。重要なのは、Target Membershipを追加したボックスにチェックを入れたことだけです。とても簡単! – SRMR

+0

私は単体テスト作業を行うことができました.2番目のコードに似ていますが、最初はAppコードでしか動作しません。私の質問はあなたがチェックしたターゲットについてのものでした。ポストで言及されているようにファイルではなくフォルダでのみ実行できるのであれば、FFQuestionsTestsはフォルダです。おそらく明確にするために質問を更新してください。 – Efren

関連する問題