首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift -如何在单元测试中禁用网络

Swift -如何在单元测试中禁用网络
EN

Stack Overflow用户
提问于 2018-09-14 14:09:05
回答 1查看 715关注 0票数 1

有没有办法关闭单元测试的Internet连接?当设备在线或不在线时,我必须检查异步功能。我该怎么做呢?

我知道额外的工具包,但是我想用编程的方式来编写这个特性。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-09-14 21:12:16

这就是我模拟API调用的方式。这些步骤需要

1)无互联网连接

2)模拟API调用和数据

我已经为api响应创建了数据模型,这就是我模拟它的方式

代码语言:javascript
运行
复制
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的类

代码语言:javascript
运行
复制
class UserService {
    func getUserDetails(completion: (_: ActivityResponse?, _: Error?)) {
        //get RESPONSE from server
        let data = ActivityResponse(object: RESPONSE)
        return completion(data, nil)
    }
}

现在,在您的测试类中,调用我们创建的buildActivityList()并将其传递到模拟类中。

代码语言:javascript
运行
复制
class MockUserService: UserService {
    override func getUserDetails(completion: (_: ActivityResponse?, _: Error?)) {
        return completion(buildActivityList(), nil)
    }
}

这样,无论何时测试API调用,都会注入模拟数据。因此,不需要互联网连接。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52325861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档