2015-07-11 84 views
3

我有一個使用Parse.com作爲後端的示例應用程序,現在我正在編寫一些單元測試。 作爲解析文檔中說,當我子類PFObject我實現初始化方法:單元測試使用Parse.com的Swift應用程序

override class func initialize() { 
    struct Static { 
     static var onceToken : dispatch_once_t = 0; 
    } 
    dispatch_once(&Static.onceToken) { 
     self.registerSubclass() 
    } 
} 

當我運行我的單元測試我的應用程序崩潰與以下錯誤initialize方法:

終止應用程序由於未捕獲的異常'NSInternalInconsistencyException',原因:'試圖將TargetName.MyObject和TargetNameTests.MyObject註冊爲MyObject的本地PFObject子類。無法確定使用的正確類,因爲它們都不會從另一個類繼承。

任何想法如何解決這個問題?

回答

3

我找到一種方法來完成這項工作的唯一方法是不要在測試目標中包含子類,並且公開聲明子類及其變量和方法。而且還導入應用目標

#import MyProject 
#import Parse 
#import XCTest 

public class MySubClass: PFObject, PFSubclassing { 
    @NSManaged public var name: String? 

    public static func parseClassName() -> String { 
     return "MySubClass" 
    } 
} 

然後在測試文件,你需要調用類的這樣:

let testObject = MyProject.MyClass() 
+0

他們沒有,如果你使用@testable屬性導入是公共該模塊:https://developer.apple.com/library/tvos/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html#//apple_ref/doc/uid/TP40014132-CH4-SW11 –