2015-07-11 85 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 –