Я пытаюсь настроить структуру Typhoon с помощью примера проекта, и он отлично работает, когда я запускаю симулятор, но выдает ошибку, когда я пытаюсь запустить тесты. Ошибка следующая:
NSInvalidArgumentException", причина: "Класс "DI_Example.MyAssembly" не является подклассом TyphoonAssembly"
Теперь я прочитал здесь и здесь, что это вызвано двойной компоновкой пакета Typhoon из-за CocoaPods. Итак, это мой подфайл, и не похоже, что он должен быть связан дважды
platform :ios, '8.0'
target 'DI_Example', :exclusive => true do
pod 'Typhoon', '~> 2.3' end
target 'DI_ExampleTests', :exclusive => true do end
inhibit_all_warnings!
Кроме того, когда я меняю цель тестов с стиля приложения на стиль логики, все работает нормально (я предполагаю, что пакет не импортируется дважды). Может ли кто-нибудь определить проблему с тем, что я делаю?
Кажется, что ошибка возникает еще до того, как я попал в мой тест, поэтому я предполагаю, что это связано со связью двух целей.
Вот мой тест (который будет пройден, если я установлю для хоста Приложение значение Нет)
var controller: HomeViewController!
override func setUp() {
super.setUp()
let ctrlAssembly = ControllersAssembly()
let blAssembly = BusinessLogicAssembly()
ctrlAssembly.blAssembly = blAssembly
let factory = TyphoonBlockComponentFactory(assemblies: [blAssembly, ctrlAssembly])
let configurer = TyphoonConfigPostProcessor()
configurer.useResourceWithName("Info.plist")
factory.attachPostProcessor(configurer)
controller = factory.componentForKey("homeViewController") as HomeViewController
}
func testControllerTitle() {
// Arrange
// Act
controller.viewDidLoad()
// Assert
println(controller.title)
XCTAssertTrue(controller.title == "Root View", "Title is set")
}