有没有办法关闭单元测试的Internet连接?当设备在线或不在线时,我必须检查异步功能。我该怎么做呢?
我知道额外的工具包,但是我想用编程的方式来编写这个特性。
提前感谢
发布于 2018-09-14 21:12:16
这就是我模拟API调用的方式。这些步骤需要
1)无互联网连接
2)模拟API调用和数据
我已经为api响应创建了数据模型,这就是我模拟它的方式
func buildActivityList() -> ActivityResponse {
let resp = ActivityResponse(json: .null)
let userHistory = ActivityUserHistory(json: .null)
userHistory.time = "2018-02-16T07:41:54.046Z"
resp.userHistory = [userHistory]
//Add all other relevant data
return resp
}
接下来,您需要在调用API时覆盖该函数,并将上述模拟数据作为API响应进行传递。
假设您有一个调用api的类
class UserService {
func getUserDetails(completion: (_: ActivityResponse?, _: Error?)) {
//get RESPONSE from server
let data = ActivityResponse(object: RESPONSE)
return completion(data, nil)
}
}
现在,在您的测试类中,调用我们创建的buildActivityList()
并将其传递到模拟类中。
class MockUserService: UserService {
override func getUserDetails(completion: (_: ActivityResponse?, _: Error?)) {
return completion(buildActivityList(), nil)
}
}
这样,无论何时测试API调用,都会注入模拟数据。因此,不需要互联网连接。
希望这能有所帮助
https://stackoverflow.com/questions/52325861
复制相似问题