测试目标中的Swift Typhoon错误 - 不是Typhoon Assembly的子类

时间:2014-12-16 13:29:01

标签: ios swift cocoapods typhoon

我正在尝试使用示例项目设置Typhoon框架,当我运行模拟器时它工作正常但是当我尝试运行测试时它给我一个错误。错误如下:

  

NSInvalidArgumentException',原因:' Class' DI_Example.MyAssembly'是   不是TyphoonAssembly'

的子类

现在,我读到了herehere,这是由于CocoaPods导致Typhoon包被连接两次引起的。所以这是我的Podfile,它似乎不应该连接两次

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")
}

1 个答案:

答案 0 :(得分:2)

所以我设法解决了这个问题。问题是,因为我没有对测试目标有任何依赖,所以我没有Pods-PocketForecastTests.debug.xcconfig所以在我的项目配置中,我使用与app目标相同的配置文件,我猜它会导致它被链接两次。 / p>