无法在单元测试项目中的 Swift 中读取 JSON 文件

Posted

技术标签:

【中文标题】无法在单元测试项目中的 Swift 中读取 JSON 文件【英文标题】:Unable to read JSON file in Swift inside Unit Test Project 【发布时间】:2020-04-09 02:37:32 【问题描述】:

我不知道为什么,但我无法在我的 Swift 单元测试项目中读取 json 文件。我错过了什么。 url 是空对象,它只是跳到完成(无)第 20 行。

【问题讨论】:

您是否将其添加到测试目标的构建阶段? 为什么不直接调用 https 来打开天气图……更简单…… @jbiser361 是的,但假设 OpenWeatherMap 每次我拨打电话都会收取 X 金额。 哦,你的权利......他们做到了 【参考方案1】:

您的代码正在使用Bundle.main,但您将文件放在测试目标中(代码上下文中的/bundle)。

我不确定如何获取测试包,但根据this question,您应该可以这样做:

guard let url = Bundle(for: MockWeatherService.self).url(forResource: "openweathermap-response", withExtension: "json"),

然后是 guard 声明的其余部分

【讨论】:

我想如果我正在运行测试项目,那么 bundle.main 将是测试项目。 我认为捆绑包取决于您的文件夹结构和文件定义的目标,因此它不会改变。但是(假设此解决方案有效)即使 Bundle.main 是运行测试时的测试包,它也可以工作,因为它获取了该特定类的包。

以上是关于无法在单元测试项目中的 Swift 中读取 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中的单元测试 | IOS 故事板 |无法转换目标 c 中定义的视图控制器类

渲染中的错误:“TypeError:无法读取未定义的属性'_t'”在使用 Jest 的单元测试中

Swift 中的单元测试 HKSampleQuery

比较单元测试中的 swift Type 值 - XCTAssertEqual vs ==

在 Xcode ui 测试 Swift 中查找表格单元格

单元测试:TypeError:无法读取未定义的属性“管道”