gpt4 book ai didi

ios - 如何为 Alamofire 请求函数编写单元测试?

转载 作者:搜寻专家 更新时间:2023-10-31 08:20:01 26 4
gpt4 key购买 nike

我有一个项目,我在其中发送 .GET 请求以从服务器获取数据,为此我使用 Alamofire 和 SwiftyJSON。

例如:

我有文件“Links”、“Requests”和我的 ViewController。

Links.swift

var getAllData: String {
return "\(host)api/getalldata"
}

Requests.swift

func getAllData(_ completion:@escaping (_ json: JSON?) -> Void) {
Alamofire.request(Links.sharedInstance.getAllData).validate().responseJSON { (response) in
do {
let json = JSON(data: response.data!)
completion(json)
}
}
}

View Controller

Requests.sharedInstance.getAllData { (json) in
// ...
}

那么,我该如何为这种情况编写单元测试呢?我刚刚学习单元测试,在所有书籍中都只有本地案例,没有网络案例的例子。任何人都可以描述我并帮助我如何使用 Alamofire 和 SwiftyJSON 为网络请求编写单元测试吗?

最佳答案

由于 Requests.sharedInstance.getAllData 调用是一个网络请求,您需要使用期望方法创建它的一个实例,以便您可以等待 Requests 的结果。 sharedInstance.getAllData 和它的超时我设置 10 秒否则测试失败。

我们期望常量 errornil 并且 resultnotnil 否则测试也会失败。

import XCTest

class Tests: XCTestCase {

func testGettingJSON() {
let ex = expectation(description: "Expecting a JSON data not nil")

Request.sharedInstance.getAllData { (error, result) in

XCTAssertNil(error)
XCTAssertNotNil(result)
ex.fulfill()

}

waitForExpectations(timeout: 10) { (error) in
if let error = error {
XCTFail("error: \(error)")
}
}
}

}

您可能想要返回一个错误,以便详细了解请求失败的原因,这样您的单元测试也可以验证此信息。

func getAllData(_ completion: @escaping (_ error: NSError?, _ json: String?) -> Void) {

关于ios - 如何为 Alamofire 请求函数编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894064/

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