我正在尝试模拟网络结果数据并在JSON.txt中对其进行模拟,我想执行JSON解析的单元测试,但似乎我总是无法读取JSON.txt文件
将要测试的方法:
class Music {
func parseJSON(data : Data) -> [[String:Any]]? {
return try? JSONSerialization.jsonObject(with: data, options: []) as! [[String:Any]]
}
}
这是testCase
import XCTest
@testable import basicUnitTesting
class musicTests: XCTestCase {
func testParseJSON() {
let music = Music()
let bundle = Bundle(for: type(of: self))
if let path = bundle.path(forResource: "JSON", ofType: "txt") {
if let data = try? Data.init(contentsOf: URL.init(fileURLWithPath: path)) {
let result = music.parseJSON(data: data)
XCTAssertNotNil(result, "It should not be nil")
XCTAssertGreaterThan(result!.count, 0, "It should have value, not zero")
} else {
XCTFail()
}
} else {
XCTFail()
}
}
}
这是错误的屏幕截图:
如您所见,路径为nil,然后测试失败。
这是JSON.txt中的数据,用于模拟数据
[{“ id”:“ 1”,“ music_url”:“ http://orangevalleycaa.org/api/media/music/ModernHardRock_45450.wav”,“ name”:“现代 Hard Rock”,“描述”:“强大的摇滚曲目和酷酷的吉他即兴演奏, 充满活力的时髦鼓,紧绷的低音和吉他独奏。完美用于 运动(如拳击)视频,广告 等等“,” duration“:” 2:18“,” image“:” http://orangevalleycaa.org/api/media/images/ArtistWorking_059730538.png“,” thumb“:” http://orangevalleycaa.org/api/media/images/thumbs/ArtistWorking_059730538.png“,” created_by“:” ikoliks“,” file_name_original“: “现代 硬 rock_LYNDA_45450.wav“},{” id“:” 2“,” music_url“:” http://orangevalleycaa.org/api/media/music/AcousticIntro_45687.wav“,” name“:”原声 简介”,“描述”:“带有梦幻般的简短民谣吉他简介, 轻松的品质激发灵感 反射。“,”持续时间“:” 0:57“,”图像“:” http://orangevalleycaa.org/api/media/images/BalletInSmoke_054599628.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/BalletInSmoke_054599628.png“,” created_by“:” Trevor Lackey“,” file_name_original“:”声学 Intro_LYNDA_45687.wav“},{” id“:” 3“,” music_url“:” http://orangevalleycaa.org/api/media/music/OptimisticLife_41224.wav“,” name“:”乐观 生活”,“描述”:“歌声乐观,那是完美的 需要令人振奋和酷炫的音乐视频的背景 气氛。“,”持续时间“:” 0:30“,”图像“:” http://orangevalleycaa.org/api/media/images/BlowingGlass_066874921.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/BlowingGlass_066874921.png“,” created_by“:” PremiumAudio“,” file_name_original“: “ Optimistic Life_LYNDA_41224.wav”},{“ id”:“ 4”,“ music_url”:“ http://orangevalleycaa.org/api/media/music/TraceyLarvenz_35879.wav”,“ name”:“轻 和氧气”,“描述”:“适合使用的气泡状舒缓轨道 企业,营销和激励 视频。“,”持续时间“:” 3:05“,”图像“:” http://orangevalleycaa.org/api/media/images/FireDancers_042981315.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/FireDancers_042981315.png“,” created_by“:” Tracey Larvenz“,” file_name_original“:” Tracey Larvenz track_LYNDA_35879.wav“},{” id“:” 5“,” music_url“:” http://orangevalleycaa.org/api/media/music/ExploreCaliforniaIntro_8773.wav“,” name“:”探索 加利福尼亚”,“描述”:“合成器和打击乐器的音色像 沿着加利福尼亚开车 海岸。“,”持续时间“:” 0:20“,”图像“:” http://orangevalleycaa.org/api/media/images/GlassBlownDragon_056473995.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/GlassBlownDragon_056473995.png“,” created_by“:”布莱斯 Poole“,” file_name_original“:”浏览加利福尼亚 Intro_LYNDA_8773.wav“},{” id“:” 6“,” music_url“:” http://orangevalleycaa.org/api/media/music/Aspire_45442.wav“,” name“:” Aspire“,” description“:” \ t \ r 原声钢琴,电钢琴,钢片琴演奏的优美音轨 和一些双簧管和单簧管的声音在 合唱。“,”持续时间“:” 2:45“,”图像“:” http://orangevalleycaa.org/api/media/images/GraffitiArtist_065000861.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/GraffitiArtist_065000861.png“,” created_by“:” AudioQuattro“,” file_name_original“: “ Aspire_LYNDA_45442.wav”},{“ id”:“ 7”,“ music_url”:“ http://orangevalleycaa.org/api/media/music/BeginningInTheFarm_41245.wav”,“ name”:“开始 在农场”,“描述”:“积极而鼓舞人心。梦想,想法和 充满新意的感觉 美。”,“持续时间”:“ 2:06”,“图像”:“ http://orangevalleycaa.org/api/media/images/GraphicArtist_052214820.png”,“拇指”:“ http://orangevalleycaa.org/api/media/images/GraphicArtist_052214820.png”,“ created_by”:“ Julio Kladniew“,” file_name_original“:”开始于 Farm_LYNDA_41245.mp3“},{” id“:” 8“,” music_url“:” http://orangevalleycaa.org/api/media/music/BrightAcousticAmbient_35443.wav“,” name“:”亮 原声吉他“,”描述“:”原声吉他和夏威夷四弦琴醇厚 以12弦原声吉他为主音轨 乐器。“,”持续时间“:” 3:21“,”图像“:” http://orangevalleycaa.org/api/media/images/PleinAirArtist_061873487.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/PleinAirArtist_061873487.png“,” created_by“:” Eliosmusic“,” file_name_original“: “明亮的声音 environmental_LYNDA_35443.wav“},{” id“:” 9“,” music_url“:” http://orangevalleycaa.org/api/media/music/BrothersInArms_46815.wav“,” name“:”兄弟 在武器中”,“描述”:“描述战时的主题叙事片 英雄,胜利而堕落。适用于令人发指的,令人动容的场景 损失和 悲剧。“,”持续时间“:” 1:15“,”图像“:” http://orangevalleycaa.org/api/media/images/SculptorWelding_053783433.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/SculptorWelding_053783433.png“,” created_by“:”约翰 伦纳德·弗朗西斯(Leonard French),“ file_name_original”:“兄弟在 Arms_LYNDA_46815.wav“},{” id“:” 10“,” music_url“:” http://orangevalleycaa.org/api/media/music/BusinessCorporateBackgrounds_41443.wav“,” name“:”业务 公司背景”,“描述”:“积极向上, 激发柔和的公司环境音乐,非常适合作为背景 鼓舞人心的故事,广告,电视广告,品牌的音乐 公司与新闻,科学与发明,建筑与贸易, 技术和教育,还有很多 更多。“,”持续时间“:” 2:57“,”图像“:” http://orangevalleycaa.org/api/media/images/SpinningPottery_061544433.png“,”拇指“:” http://orangevalleycaa.org/api/media/images/thumbs/SpinningPottery_061544433.png“,” created_by“:” AZOVMUSIC“,” file_name_original“: “商业企业背景_LYNDA_41443.wav”}]
答案 0 :(得分:1)
从错误中很明显,您的文件未包含在资源路径中
错误行> if let path = bundle.path(forResource: "JSON", ofType: "txt")
因此,问题在于您的文件未包含在此处 musicTests>构建阶段>复制捆绑资源
答案 1 :(得分:0)
确保将JSON添加到测试目标(在文件导航器中选择JSON文件,然后在右侧面板中找到“目标成员身份”并验证复选框。
答案 2 :(得分:0)
尝试
print(index_duplicates_with_same_index(df, 2, 'similarity_index'))