1
我正在爲基於Siesta的類編寫一個測試,並試圖訪問從服務器收到的錯誤。在我的對象,我配置一樣的服務,以便:我可以使用SwiftyJSON獲取Siesta中的錯誤內容嗎?
self.service.configure {
$0.config.pipeline[.parsing].add(SwiftyJSONTransformer, contentTypes: ["*/json"])
// other configuration setup
}
我的測試包含以下內容:
api.fetchApiToken(libraryRequiringAuth).onSuccess({ _ in
// Then
XCTFail("Expected request failure, got success")
}).onFailure({ [weak self] (error) in
XCTAssertEqual(error.httpStatusCode, expectedStatusCode)
let serverError: JSON? = error.entity?.typedContent()
XCTAssertEqual(serverError![0]["title"].string, expectedErrorMessage)
print("Expected error is: \(error)")
XCTAssertNil(self?.api.bearerAuthHeader)
expectation.fulfill()
})
線let serverError: JSON? = error.entity?.typedContent()
被設置serverError
到nil
,但在調試器,我可以看到error.entity
存在並具有我期望的內容。我現在不能使用SwiftyJSON?
編輯:
下面是錯誤的內容:
Error Error(userMessage: "Forbidden", httpStatusCode: Optional(403), entity: Optional(Siesta.Entity(content: [{
ipRangeError = {
libraryId = 657;
libraryName = "Test library";
requestIp = "my.ip.address.was_here";
};
status = 403;
title = "Authentication Failed";
userData = {
};
}], charset: Optional("utf-8"), headers: ["content-type": "application/json; charset=utf-8"], timestamp: 490978565.82571602)), cause: nil, timestamp: 490978565.825499)
你絕對可以得到Siesta中的錯誤內容。它看起來像一個類型不匹配問題。你會記錄錯誤響應併發布? (在'onFailure'中'print(error.dynamicType,error)') –
作爲解決方法,我發現'let serverError = JSON(error.jsonArray)'起作用,但我仍然希望能夠使用'typedContent()' –