2016-08-11 2 views
5

के लिए नकली क्षेत्र परिणाम मैं मान्य करने के लिए एक परीक्षण लिखा है, इसकी एक समारोह में कहा जाता है:कैसे करें परीक्षण

func test_getTaskLists_doNotCreateOrUpdateTaskListToStorageWhenSynchedLocally() { 

    ...  
    let (datasource, restAPI, fakeTaskListStorage) = ... 

    datasource.getTaskLists() { (taskLists, error) -> Void in 
     ... 
     XCTAssertEqual(1, fakeTaskListStorage.readAllInvocationCount) 
     ...  
    } 
... 
    } 

समारोह सुपर कार्यान्वयन बायपास करने के लिए मज़ाक उड़ाया जाता है और मुद्दा यह है कि समारोह एक परिणाम देता है जो मैं एक वैध ऑब्जेक्ट वापस करने के लिए निर्माण/नकली बनाने के लिए पता नहीं लगा सकता है, इसलिए संकलक शिकायत करना बंद कर देता है ... मुझे पता है कि मैं सिर्फ super.readAll() को कॉल कर सकता हूं लेकिन यहां मैं वास्तव में अपने टेस्ट डेटा (fakeTaskLists) को एक कन्वर्ट करना चाहता हूं नकली परिणाम वस्तु इसलिए हर कोई खुश है ... सुनिश्चित नहीं है कि यह संभव है

class FakeTaskListsStorageRealm : TaskListStorageRealm { 
    var fakeTaskLists:[TaskList]? 
    override func readAll() -> RealmSwift.Results<TaskList> { 
     readAllInvocationCount += 1 
     //Here I want to return fakeTaskLists somehow... 
    } 
} 

उत्तर

3

Results को तुरंत चालू करने का कोई तरीका नहीं है। उप-वर्गीकरण Results भी अनुमति नहीं देता है। मुझे लगता है कि Results का उपयोग करने के बजाय ResultsWrapper जैसे प्रोटोकॉल द्वारा Results को छिपाने का सबसे अच्छा तरीका है।

लेकिन एक आसान कामकाज परीक्षण करते समय इन-मेमोरी रीयल का उपयोग कर रहा है। FakeTaskListsStorageRealm के readAll() इस प्रकार में स्मृति क्षेत्र का उपयोग कर लिखा जा सकता है:

class FakeTaskListsStorageRealm : TaskListStorageRealm { 
    var fakeTaskLists:[TaskList]? 
    override func readAll() -> RealmSwift.Results<TaskList> { 
     readAllInvocationCount += 1 
     return try! Realm(configuration: Realm.Configuration(inMemoryIdentifier: "test")).objects(TaskList.self) 
    } 
} 
+0

मैं इसी तरह की आवरण है और इस दृष्टिकोण काम कर रहा है इस बात की पुष्टि कर सकते हैं - मैं सरणी के साथ आवरण के कार्यान्वयन है तो मैं in- का उपयोग नहीं करते स्मृति क्षेत्र। – ReDetection

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