如何快速读取JSON.text文件以产生数据类型?

时间:2018-08-22 09:47:17

标签: ios json swift unit-testing testing

我正在尝试模拟网络结果数据并在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()
        }

    }



}

这是错误的屏幕截图:

enter image description here

如您所见,路径为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”}]

3 个答案:

答案 0 :(得分:1)

从错误中很明显,您的文件未包含在资源路径中 错误行> if let path = bundle.path(forResource: "JSON", ofType: "txt")

因此,问题在于您的文件未包含在此处 musicTests>构建阶段>复制捆绑资源

enter image description here

答案 1 :(得分:0)

确保将JSON添加到测试目标(在文件导航器中选择JSON文件,然后在右侧面板中找到“目标成员身份”并验证复选框。

答案 2 :(得分:0)

尝试

print(index_duplicates_with_same_index(df, 2, 'similarity_index'))