【问题标题】:Use Local JSON file in Unit Test在单元测试中使用本地 JSON 文件
【发布时间】:2017-04-05 20:52:16
【问题描述】:

我有一个名为“FFQuestions”的应用程序。我使用了一个名为 QA.json 的本地 json 文件。

有什么方法可以在我的“FFQuestionsTests”文件夹文件中使用QA.json,而无需重新创建文件并将其放入该文件夹中?我需要用我的代码来改变它吗?还是像为“FFQuestionsTests”添加目标成员一样简单?

这是我加载QA.json的方法...

func loadJSONFromFile() -> [String: Any]? {
    guard let url = Bundle.main.url(forResource: "QA", withExtension: "json") else {return nil}
    guard let data: Data = NSData(contentsOf: url) as Data? else {return nil}

    do {
        let object = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
        guard let dictionary = object as? [String: Any] else {return nil}
        return dictionary
    } catch  {
        print("Not parsed")
    }

    return nil
}

甚至认为它可能需要在单元测试中有所不同,所以我尝试了......

func loadJSONFromTestsFile() -> [String: Any]? {
    let testBundle = Bundle(for: type(of: self))
    let url = testBundle.url(forResource: "QA", withExtension: "json")

    guard let data: Data = NSData(contentsOf: url!) as Data? else {return nil}

    do {
        let object = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
        guard let dictionary = object as? [String: Any] else {return nil}
        print(dictionary)
        return dictionary
    } catch  {
        print("Not parsed")
    }

    return nil
}

这就是我尝试过的方法,但我仍然遇到nil 崩溃。

【问题讨论】:

  • nil 崩溃究竟在哪里?哪条线?什么错误信息?

标签: swift unit-testing xctest


【解决方案1】:

就像为“FFQuestionsTests”添加目标成员一样简单

【讨论】:

  • 用于单元测试的代码是第一个还是第二个? FFQuestionsTest 的会员资格是什么意思?在 Question 中,FFQuestionsTest 被称为是一个文件夹,而不是一个文件。
  • @Efren 代码是第一个和第二个,重要的是我选中了添加目标成员资格的框。很简单!
  • 我只能做一个单元测试工作,类似于第二个代码,第一个只适用于App代码。我的问题是关于你说你检查的目标,如果它只能在文件而不是帖子中提到的文件夹上完成,FFQuestionsTests 是一个文件夹。也许更新问题以澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多