使用Alamofire进行网络请求的单元测试iOS App

时间:2016-10-14 03:41:49

标签: ios unit-testing uiviewcontroller alamofire stub

我是iOS开发的新手,我正在构建一个使用Alamofire进行HTTP请求的应用程序。我需要为登录等一些事情编写单元测试,并需要帮助。我做了一些关于Stub,Mocks的研究,还阅读了一些像Nocilla和OHTTPStubs这样的框架,但我无法开始。我有一个登录控制器,它获取登录信息,如 - 用户名,密码板,以及登录按钮操作,我称之为服务器实用程序方法。我有一个服务器实用程序类,它实现了发出网络请求的方法。

@IBAction func logIn(sender: AnyObject?) {

    server.loginWith(username, password: password, server:url) { (user, error) in
        dispatch_async(dispatch_get_main_queue()) {
            if let err = error {
                self.handleError(err)
                return
            }
            self.performSegueWithIdentifier("unwind", sender: self)
        }
    }
}

这是服务器实用程序类

class Server {
func loginWith(username:String, password:String, server:String, callback:CompleteHandler) {
    Alamofire.request(.GET, server + "/login", headers:defaultHeaders).validate().responseJSON {response in
        var err:NSError?
        var user:Object?
        defer {
            dispatch_group_leave(self.dispGrp)
            callback(user:user, error: err)
        }

        switch response.result {
        case .Success():
            //gives me user data

        case .Failure(let error):
           // gives me error
    }
}

如果我不希望进行网络通话,我如何对以下代码进行单元测试。请帮助我,因为我被困住了很长时间。

谢谢。

1 个答案:

答案 0 :(得分:1)

使用OHHTTPStubs

它允许你:

  • 使用虚假网络数据测试您的应用程序(从文件存根)并模拟慢速网络,以检查在恶劣网络条件下的应用程序行为
  • 编写使用来自灯具的假网络数据的单元测试。

support swift 3.0