无法在单元测试项目中的 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 的单元测试中