3

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

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

现在,我在这里这里读到这是由于 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")
}
4

1 回答 1

2

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

于 2014-12-16T15:59:23.430 回答