2016-12-14 11 views
6

मैं एक यूआई परीक्षण चला रहा हूं जहां मुझे waitForExpectations एपीआई का उपयोग करके एसिंक्रोनस फ़ंक्शन का परीक्षण करने की आवश्यकता है।एपीआई उल्लंघन का इंतजार करते समय waitForExpectations

मैं इस त्रुटि हो रही है:

"NSInternalInconsistencyException", "API violation - call made to wait without any expectations having been set."

मैं सच में समझ में नहीं आता, के रूप में मैं सही ढंग से उम्मीद पैदा की है। बजाय मैं XCTestExpectation() उपयोग करने के लिए बनाने की आवश्यकता दस्तावेज़ के अनुसार एपीआई expectation(description:) है, लेकिन संकलक कि स्वीकार नहीं करेंगे,:

इसके अलावा, वहाँ एक प्रलेखन बग हो रहा है।

func testExample() { 
    XCTAssertTrue(state == .STATE_NOT_READY) 
    let exp1 = XCTestExpectation() 

    let queue = DispatchQueue(label: "net.tech4freedom.AppTest") 
    let delay: DispatchTimeInterval = .seconds((2)) 
    queue.asyncAfter(deadline: .now() + delay) { 
     XCTAssertTrue(true) 
     exp1.fulfill() 
    } 

    self.waitForExpectations(timeout: 4){ [weak self] error in 
     print("X: async expectation") 
     XCTAssertTrue(true) 
    } 
    self.waitForExpectations(timeout: 10.0, handler: nil) 
} 
+0

जब आप 'self.expectation (विवरण:) का उपयोग आप क्या त्रुटि क्यों मिलती है'? क्योंकि ऐसा करने का यह सही तरीका होगा, अन्यथा आपकी परीक्षा कक्षा यह नहीं जानती कि आपने अपनी उम्मीद बनाई है। – Losiowaty

+0

यदि मैं विवरण पैरामीटर के साथ अपेक्षा बनाने की कोशिश करता हूं (exp1 = XCTestExpectation (विवरण: "ss2") दें), मुझे "तर्क के लिए पास किया गया तर्क जो कोई तर्क नहीं लेता" – onthemoon

उत्तर

8

ठीक है, आपकी गलती यह है कि आप उम्मीद को तुरंत चालू करने का प्रयास करते हैं। डॉक्स स्पष्ट रूप से

Use the following XCTestCase methods to create XCTestExpectation instances:
- expectation(description:)

इसका मतलब यह है कहते हैं, कि आप इस तरह की उम्मीदों बनाना चाहिए:

func testMethod() { 
    let exp = self.expectation(description: "myExpectation") 
    // your test code 
} 
+1

आप एपीआई 'प्रतीक्षा भी कर सकते हैं (अपेक्षाओं के लिए : [XCTestExpectation], टाइमआउट सेकेंड: टाइमइंटरवाल) 'और उम्मीदों में गुजरते हैं यदि वे कुछ परीक्षण स्टब क्लास से निकलते हैं। –

संबंधित मुद्दे

 संबंधित मुद्दे