Модульное тестирование Swift-приложения, которое использует Parse.com
У меня есть пример приложения, использующего Parse.com как бэк-энд, и теперь я пишу некоторые юнит-тесты.
Как сказано в документации по синтаксическому анализу, при создании подкласса PFObject
я реализовал метод initialize:
override class func initialize() {
struct Static {
static var onceToken : dispatch_once_t = 0;
}
dispatch_once(&Static.onceToken) {
self.registerSubclass()
}
}
Когда я запускаю модульные тесты, мое приложение аварийно завершает работу в методе initialize со следующей ошибкой:
Завершение работы приложения из-за неперехваченного исключения "NSInternalInconsistencyException", причина: "пытался зарегистрировать оба имени цели.MyObject и TargetNameTests.MyObject как родной PFObject подкласс MyObject. Не удается определить правильный класс для использования, потому что ни один из них не наследуется от другого.
Есть идеи, как решить эту проблему?
1 ответ:
Единственный способ, который я нашел, чтобы сделать эту работу, - это не включать подкласс в тестовую цель и объявлять подкласс и его переменные и методы открытыми. А также импортировать цель приложения
#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()