2016-10-11 20 views
5

MyModule में साथ 'XCTAssertEqual' आह्वान नहीं कर सकता, मैं इस enum है।एक तर्क सूची ((ERRORTYPE), XMPPError)

मुझे यह त्रुटि संदेश क्यों मिलता है: Cannot invoke 'XCTAssertEqual' with an argument list ((ErrorType), MyError)? (प्रकार डाली

+0

वस्तु की किस प्रकार subscribeError द्वारा दिया जाता है ?? मेरा मतलब है "त्रुटि" वस्तु? – user3608500

+0

(प्रश्न संपादित) त्रुटि वस्तु के प्रकार एक 'MyError' है, जो एक' ErrorType' भी –

उत्तर

6

आप अपने MyError के लिए एक एक्सटेंशन Equatable अनुरूप जोड़ना चाहिए:

XCTAssertEqual(error, MyError.notAuthenticated as ErrorType) 
// Cannot invoke 'XCTAssertEqual' with an argument list ((ErrorType), ErrorType) 

XCTAssert(error == (MyError.notAuthenticated as ErrorType)) 
// Binary operator '==' cannot be applied to two 'ErrorType' operands 

इसी कार्य को पूरा करने के लिए, मैं इस किया था ।

extension MyError: Equatable 
{ 
    static func == (lhs: MyError, rhs: MyError) -> Bool { 
     switch (lhs, rhs) { 
     case (.failToSendMessage, .failToSendMessage): 
      return true; 

     case (.notAuthenticated, .notAuthenticated): 
      return true; 

     case (.noResponseReceived, .noResponseReceived): 
      return true; 

     default: 
      return false; 
     } 
    } 
} 

और फिर, यह आपकी त्रुटि का दावा करना बहुत आसान है।

if let error = result.error { 
        XCTAssertTrue(error == MyError.notAuthenticated,"API returns 403"); 
       } else { 
        XCTFail("Response was not an error"); 
       } 

मैं

0

त्रुटि पता चलता है, यहाँ आप XCTAssertEqual

1.Check का उपयोग करते समय त्रुटि (ErrorType) के रूप में के बजाय ErrorType

2.Try की तुलना में परिवर्तित करने के बाद हो रही है MyError साथ (ErrorType) तुलना करने के लिए कोशिश कर रहे हैं) ErrorType से MyError त्रुटि।

+0

1. मैं नहीं मिल सकता है मैं कैसे मिला '(ERRORTYPE)' के बजाय 'ErrorType' 2 है। टाइप कास्टिंग कारण त्रुटि को बदलकर 'XCTAssertEqual' को तर्क सूची ((त्रुटि प्रकार), त्रुटि प्रकार के साथ 'नहीं बदला जा सकता है) –

0

यह पता चला, ERRORTYPE सीधे तुलना नहीं की जा सकती है:

 switch error { 
     case MyError.notAuthenticated: 
      () 
     default: 
      XCTFail() 
     } 
संबंधित मुद्दे