gpt4 book ai didi

ios - 如何读取本地 JSON 文件进行测试

转载 作者:技术小花猫 更新时间:2023-10-29 10:13:43 27 4
gpt4 key购买 nike

我正在尝试为 json 验证编写单元测试(因为该应用严重依赖来自 rest API 的 json)。

我有一个包含简单 json 的本地文件:“goodFeaturedJson.txt”

内容:

{
"test": "TEST"
}

测试用例:

- (void)testJsonIsValid
{
Featured *featured = [Featured new];

NSString* filepath = [[NSBundle mainBundle]pathForResource:@"goodFeaturedJson" ofType:@"text"];

NSData *data = [NSData dataWithContentsOfFile:filepath];

NSString *jsonString = [[NSString alloc] initWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil];//[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"The json string is: %@", jsonString);

id JSON = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

STAssertTrue([featured jsonIsValid:JSON], @"Featured Data is NOT valid...");
}

测试每次都失败。控制台打印:

The json string is: (null)

为什么?我知道测试失败的原因,因为很明显,如果数据为 nil/null,则不会有有效的 json,并且验证器将中断(如果无效则应该中断)。

一定有一些简单的东西我在这里错过了,有什么想法吗?

最佳答案

在单元测试中你可能想使用[NSBundle bundleForClass:[self class]],而不是[NSBundle mainBundle]。那是因为单元测试不是一个独立的应用程序。使用 mainBundle 你会得到类似 /Applications/Xcode.app/Contents/Developer/Tools 的东西,但是使用 bundleForClass 会得到你的单元所在的包测试类所在。

guard let pathString = Bundle(for: type(of: self)).path(forResource: "UnitTestData", ofType: "json") else {
fatalError("UnitTestData.json not found")
}

关于ios - 如何读取本地 JSON 文件进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16571051/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com