我在iOS应用程序中使用Alamofire进行API调用。我试图在测试中存根此数据,我已经尝试了Mockingjay和ohhttpstub,但都不起作用,所以我现在试图存根我收到的响应。
我需要创建一个响应与虚拟数据,我可以传递给我的其他方法。下面是Alamofire中Response对象的初始化器:
public init(request: NSURLRequest?, response: NSHTTPURLResponse?, data: NSData?, result: Result<Value, Error>)
然而,我不知道如何创建这个对象,因为我不能创建一个结果。下面是来自Alamofire的一些结果类:
public enum Result<Value, Error: ErrorType> {
case Success(Value)
case Failure(Error)
/// Returns `true` if the result is a success, `false` otherwise.
public var isSuccess: Bool {
switch self {
case .Success:
return true
case .Failure:
return false
}
}
/// Returns `true` if the result is a failure, `false` otherwise.
public var isFailure: Bool {
return !isSuccess
}
/// Returns the associated value if the result is a success, `nil` otherwise.
public var value: Value? {
switch self {
case .Success(let value):
return value
case .Failure:
return nil
}
}
/// Returns the associated error value if the result is a failure, `nil` otherwise.
public var error: Error? {
switch self {
case .Success:
return nil
case .Failure(let error):
return error
}
}
}
我似乎不知道如何将结果传递给其中包含值的响应对象,以表示API响应。
我想我对枚举感到困惑,以及它们如何也可以有变量。
谁能帮我建立一个回应?谢谢。
谢谢你的回答…下面是如何使用json响应
创建整个响应let london : NSDictionary = ["name" : "london", "latitude" : 23.00, "longitude" : 0.0, "id" : "london_gb"]
let paris : NSDictionary = ["name" : "paris", "latitude" : 30.00, "longitude" : -1.0, "id" : "paris_fr"]
let locations = NSArray(array: [london, paris])
let result = Result<AnyObject, NSError>.Success(locations)
var response = Response(request: NSURLRequest(), response: NSHTTPURLResponse(), data: NSData(), result: result)
参见下面的示例:
let result = Result<String, NSError>.Success("Hello")
result.isSuccess // prints true
result.value // prints "Hello"
希望有帮助
Base one的答案是@66o,但更新到Swift 4/Alamofire 4
import Alamofire
...
let result = Result<Any>.success("Hello")
let dataResponse = DataResponse(request: nil, response: nil, data: nil, result: result)