私のプロジェクトには次のコードがあります。
import PromiseKit
import SwiftyJSON
class ChartHandler {
var alamofireManager: Alamofire.Manager?
init() {
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.timeoutIntervalForRequest = 30
self.alamofireManager = Alamofire.Manager(configuration: configuration)
}
func requestTabsJSONWithLinkKey(linkKey: String) -> Promise<JSON> {
return Promise { fulfill, reject in
alamofireManager?.request(.GET, "https://.../\(linkKey)/").responseJSON {
response in
switch response.result {
case .Success:
if let value = response.result.value {
fulfill(JSON(value))
}
case .Failure(let error):
if error.code == NSURLErrorTimedOut {
reject(RequestResult.TimedOut)
} else {
reject(RequestResult.ConnectionFailed)
}
}
}
}
}
}
Mockingjay
フレームワークを使用したこの関数の単体テスト
func testChartHandlerTabsRequest() {
let expectation = expectationWithDescription("tabs json test")
let body = ["json": "test"]
stub(everything, builder: json(body))
chartHandler.requestTabsJSONWithLinkKey("test_link_key").then { jsonFromRequest -> Void in
print(jsonFromRequest)
XCTAssertTrue(jsonFromRequest.dynamicType == JSON([String: AnyObject]()).dynamicType, "Pass")
expectation.fulfill()
}.error { err in
print("Error: \(err)")
}
waitForExpectationsWithTimeout(5.0, handler: nil)
}
問題は次のとおりです。コードの実行が「その後」ではなく「エラー」ブランチに入るのは、その場合スチューブが適切に機能していないためであり、それを理解する方法がわかりません。助言がありますか?