相关疑难解决方法(0)

对iOS应用程序进行stubbing/mocking webservices

我正在开发一个iOS应用程序,其主要目的是与一组远程Web服务进行通信.对于集成测试,我希望能够针对某些具有可预测结果的虚假Web服务运行我的应用程序.

到目前为止,我已经看到两个建议:

  1. 创建一个向客户端提供静态结果的Web服务器(例如此处).
  2. 实现不同的Web服务通信代码,基于编译时标志将调用webservices或将加载来自本地文件(示例另一个)的响应的代码.

我很好奇社区对这些方法的看法以及是否有任何工具来支持这个工作流程.

更新:让我提供一个具体的例子.我有一个使用用户名和密码的登录表单.我想检查两个条件:

  1. wronguser@blahblah.com拒绝登录和
  2. rightuser@blahblah.com成功登录.

所以我需要一些代码来检查用户名参数并向我发出适当的响应.希望这是我在"虚假网络服务"中需要的所有逻辑.我该如何干净利落地管理这个?

testing continuous-integration web-services mocking ios

33
推荐指数
5
解决办法
2万
查看次数

我如何仅模拟Alamofire回复?

我使用Alamofire的Swift 2代码查询它希望返回JSON的远程URL.我已经做了足够的交互式测试,以确信它的行为足够正确.现在我想对它进行单元测试,这样我就可以依赖这些代码,然后转向其他事情.

我是Swift的新手,虽然我已经编写了几十年的OO Perl,所以我可能错过了一些东西.

这是我到目前为止设置检查代码的方式(不重要的事情,例如我如何删除用户名和密码以避免牦牛剃须).调用代码指定用户名和密码,并且只要获得结果,就会调用两个回调中的一个.(我没有处理错误,所以请不要对这个问题进行侧面跟踪.)

struct checkUsernameHandler {
    var onSuccess: () -> ()
    var onFailure: () -> ()
}
struct checkUsernameOutput {
    var authenticated: Bool?
}

func checkUsername(user: User, handler: checkUsernameHandler) {
    Alamofire.request(.PUT, NSURL(string: baseURL + "/user/verify?key=" + apiKey)!,
        parameters: [
            "username": user.username!,
            "password": user.password!,
        ],
        encoding: .JSON
    ).responseJSON { response in
        let checkusernameOutput = self.analyseCheckUsernameResponse(response)
        if let authenticated = checkusernameOutput.authenticated {
            if authenticated {
                handler.onSuccess()
            } else {
                handler.onFailure()
            }
        }
    }
}

func analyseCheckUsernameResponse (response: Response<AnyObject, NSError>) -> …
Run Code Online (Sandbox Code Playgroud)

json unit-testing swift alamofire

6
推荐指数
1
解决办法
4942
查看次数

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

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

例如:

我有文件"链接","请求"和我的ViewController.

Links.swift

var getAllData: String {
    return "\(host)api/getalldata"
}
Run Code Online (Sandbox Code Playgroud)

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

视图控制器

Requests.sharedInstance.getAllData { (json) in
    // ...
}
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能为这个案例编写单元测试?我刚刚学习单元测试,在所有书籍中只有本地案例,没有网络案例的例子.请允许任何人描述我并帮助如何使用Alamofire和SwiftyJSON编写网络请求的单元测试?

unit-testing ios swift alamofire swifty-json

4
推荐指数
1
解决办法
3673
查看次数