나는 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()
이 nil
에 serverError
을 설정하는 것입니다 라인,하지만 디버거에서, 나는 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)
당신은 확실히 얻을 수있는 시 에스타의 오류 내용. 형식이 일치하지 않는 것처럼 보입니다. 오류 응답을 기록하고 게시 하시겠습니까? ('onFailure'의'print (error.dynamicType, error)') –
임시 해결책으로,'let serverError = JSON (error.jsonArray)'가 작동하지만 여전히 사용할 수 있기를 바랍니다 'typedContent()' –