iOS - 如何打断午睡电话?
iOS - How to stub siesta calls?
我正在尝试在我当前的应用程序中为所有网络调用使用午睡。
像往常一样,我正在编写 UT 以确保一切都按预期工作。
我目前正在为午睡 PUT 呼叫与 UT 作斗争:我无法像以前使用 Alamofire 那样对呼叫进行存根。
这里是午睡电话的代码:
func rateSession(sessionId: Int, rating: Int, completionHandler: (Bool -> Void)? = nil) {
Api.shared.resource("session/" + String(sessionId) + "/rate")
.withParam("user_id", userId)
.request(.PUT, json: ["rate": rating])
.onSuccess { _ in
print("siesta call ok")
completionHandler?(true)
}
.onFailure { _ in
print("siesta call failed")
completionHandler?(false)
}
}
下面是用于存根和测试午睡调用的代码(使用 MockingJay):
// Given
let sessionId = 42
let sessionService = SessionService(userId: "42")
var rateSessionSuccess = false
self.stub(http(.PUT, uri: "http://demo.usievents.com/api/v1/session/42/rate?user_id=42"), builder: http(204))
// When
sessionService.rateSession(sessionId, rating: 1) { success in
rateSessionSuccess = success
}
// Then
expect(rateSessionSuccess).toEventually(beTrue())
打印请求和存根请求没有任何区别。
使用 alamofire 而不是午睡效果很好(存根被调用,我可以修改调用响应以测试所有预期的用例)。
在与我的一位同事讨论了这个问题之后,Siesta 似乎没有使用默认的 NSURLSession。
因此,我只是在初始化 Siesta 服务时添加了默认会话,一切正常。
super.init(baseURL: environment.apiBaseAddress, networking: NSURLSessionConfiguration.defaultSessionConfiguration())
我正在尝试在我当前的应用程序中为所有网络调用使用午睡。 像往常一样,我正在编写 UT 以确保一切都按预期工作。 我目前正在为午睡 PUT 呼叫与 UT 作斗争:我无法像以前使用 Alamofire 那样对呼叫进行存根。
这里是午睡电话的代码:
func rateSession(sessionId: Int, rating: Int, completionHandler: (Bool -> Void)? = nil) {
Api.shared.resource("session/" + String(sessionId) + "/rate")
.withParam("user_id", userId)
.request(.PUT, json: ["rate": rating])
.onSuccess { _ in
print("siesta call ok")
completionHandler?(true)
}
.onFailure { _ in
print("siesta call failed")
completionHandler?(false)
}
}
下面是用于存根和测试午睡调用的代码(使用 MockingJay):
// Given
let sessionId = 42
let sessionService = SessionService(userId: "42")
var rateSessionSuccess = false
self.stub(http(.PUT, uri: "http://demo.usievents.com/api/v1/session/42/rate?user_id=42"), builder: http(204))
// When
sessionService.rateSession(sessionId, rating: 1) { success in
rateSessionSuccess = success
}
// Then
expect(rateSessionSuccess).toEventually(beTrue())
打印请求和存根请求没有任何区别。 使用 alamofire 而不是午睡效果很好(存根被调用,我可以修改调用响应以测试所有预期的用例)。
在与我的一位同事讨论了这个问题之后,Siesta 似乎没有使用默认的 NSURLSession。 因此,我只是在初始化 Siesta 服务时添加了默认会话,一切正常。
super.init(baseURL: environment.apiBaseAddress, networking: NSURLSessionConfiguration.defaultSessionConfiguration())