如何在Xcode中加载本地json文件以进行单元测试?

时间:2016-01-24 20:23:36

标签: ios json xcode unit-testing

所以我已将文件testJson1.json添加到我的项目中。

在单元测试中,我试图在没有运气的情况下获取文件路径:

NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *filepath = [bundle pathForResource:@"testJson1.json" ofType:@"json"];

当我查看项目文件时,我可以奇怪地看到该文件被添加到资源中,我认为单元测试文件不会被添加到资源中以保持应用程序的大小。

8AA238811C5565E80031648E /* testJson1.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA2387F1C5565E80031648E /* testJson1.json */; };

我错过了什么?

enter image description here

3 个答案:

答案 0 :(得分:2)

您只需要从资源名称中删除.json,因为这不需要:)

NSString *filepath = [bundle pathForResource:@"testJson1" ofType:@"json"];

答案 1 :(得分:0)

对我有用的是:

let url = Bundle.main.url(forResource: "data", withExtension: ".json") guard let dataURL = url, let data = try? Data(contentsOf: dataURL) else { fatalError("Couldn't read data.json file") }

区别在于我用.json而不是json来标记扩展名

答案 2 :(得分:0)

假设您在上面的图片中有一个Test类,名为...

final class TagNewsTests: XCTestCase {

在func test()方法中,以这种方式加载包...

let url = Bundle(for: TagNewsTests.self).url(forResource: "testJson1", withExtension: "json")