gpt4 book ai didi

ios - 模拟 API 响应时如何在单元测试中使用 JSON 文件

转载 作者:行者123 更新时间:2023-11-28 10:34:32 26 4
gpt4 key购买 nike

作为单元测试的一部分,我想加载一个 JSON 文件并将其转换为数据。

这样我就可以断言我的服务如何处理响应,但是我不想用大量的 json block 填充每个测试用例。我希望将文件保存在与测试用例相同的目录中,但是尝试运行测试会抛出异常,因为找不到文件。

   func test_ViewDidLoad_CallsContentService() {
let contentExpectation = expectation(description: "FetchContentEntry")
let httpClient = HTTPClient()
let response = createURLResponse(forUrl: "https://foo.bar", withStatusCode: 200)
httpClient.session = MockURLSession(data: mockContentData, urlResponse: response, error: nil)

.....
}

我的文件被引用为

extension ContentSceneTests {

.........

var mockContentData: Data {
let data = try! Data(contentsOf: URL(fileURLWithPath: "./ContentResponse.json"), options: .alwaysMapped)
return data
}
}

文件是挨着的,例如

ContentSceneTests.swift

ContentResponse.json

最佳答案

我在测试中使用 XCTestCase 的扩展做了类似的事情。

你应该可以使用

var mockContentData: Data {
return getData(name: "ContentResponse")
}

func getData(name: String, withExtension: String = "json") -> Data {
let bundle = Bundle(for: type(of: self))
let fileUrl = bundle.url(forResource: name, withExtension: withExtension)
let data = try! Data(contentsOf: fileUrl!)
return data
}

关于ios - 模拟 API 响应时如何在单元测试中使用 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54377157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com