2016-07-22 2 views
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()nilserverError을 설정하는 것입니다 라인,하지만 디버거에서, 나는 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) 
+0

당신은 확실히 얻을 수있는 시 에스타의 오류 내용. 형식이 일치하지 않는 것처럼 보입니다. 오류 응답을 기록하고 게시 하시겠습니까? ('onFailure'의'print (error.dynamicType, error)') –

+0

임시 해결책으로,'let serverError = JSON (error.jsonArray)'가 작동하지만 여전히 사용할 수 있기를 바랍니다 'typedContent()' –

답변

0

그것은 당신의 SwiftyJSONTransformer 모양의 손길이 닿지 않은 오류를 떠나고있다. transformErrors: true로를 구성하십시오 : 그 플래그없이

private let SwiftyJSONTransformer = 
    ResponseContentTransformer(transformErrors: true) 
    { JSON($0.content as AnyObject) } 

는 오류 실체는 여전히 SwiftyJSON JSON의 대신 NSDictionary이며, typedContent()는 것과 일치하지 않는 유형을보고 당신에게 전무를 제공합니다.

(그리고 제목에 질문 :. 그래, 당신은 전체 에러 내용뿐만 아니라, 응답 헤더 및 기본 네트워크 계층에서 어떤 기본 ErrorType/NSError 정보를 얻을 수 있습니다)

관련 문제