在单元测试中使用本地 JSON 文件
Use Local JSON file in Unit Test
我有一个名为 "FFQuestions" 的应用程序。我使用名为 QA.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
崩溃。
这就像为 "FFQuestionsTests"
添加目标成员资格一样简单
我有一个名为 "FFQuestions" 的应用程序。我使用名为 QA.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
崩溃。
这就像为 "FFQuestionsTests"
添加目标成员资格一样简单