【问题标题】:Unit Testing iOS App which used Alamofire for network request使用 Alamofire 进行网络请求的 iOS 应用程序单元测试
【发布时间】:2023-04-06 12:15:02
【问题描述】:

我是 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
    }
}

如果我不想进行网络调用,如何对以下代码进行单元测试。请帮助我,因为我被困了很久。

谢谢。

【问题讨论】:

  • 正如你提到的存根网络调用(HTTP/HTTPS),你可以从Stubby DB开始。 Video tutorial 的链接。它可以帮助您测试错误案例、各种响应代码、延迟调用等。

标签: ios unit-testing uiviewcontroller alamofire stub


【解决方案1】:

使用OHHTTPStubs

它允许你:

  • 使用虚假网络数据(从文件中提取)测试您的应用并模拟慢速网络,以检查您的应用在不良网络条件下的行为
  • 编写使用来自您的设备的虚假网络数据的单元测试。

还有support swift 3.0

【讨论】:

  • 你能给我一个例子,告诉我如何在我给出的代码中使用 OHHTTPStubs 吗?这真的很有帮助。
猜你喜欢
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2015-08-11
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多