gpt4 book ai didi

ios - XCTest 中的 Swift TyphoonBlockComponentFactory 错误

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:35 25 4
gpt4 key购买 nike

我将 Swift 与 Typhoon 和 Cocoapods 结合使用。在我开始为我的 Typhoon 组件编写集成测试(根据 Typhoon-Example-App Test)之前,一切都运行良好。我想在测试 setUp() 方法中设置 TyphoonFactory,就像我在 AppDelegate 中所做的那样。当我执行测试时,我总是得到一个

TyphoonBlockComponentFactory assertIsAssembly:] + 244: ERROR: MyApp.MyAssembly is not a sub-class of TyphoonAssembly

Typhoon 抛出的错误(在后台使用 kindOfClass 方法。)相同的代码在 AppDelegate 中运行良好,我无法弄清楚是什么错了。

为了验证此行为,我在 booth 类中实现了 isKindOfClass 检查(参见下面的代码):

  • AppDelegate -> true
  • MyComponentTest -> false

有人可以进一步帮助我吗?非常感谢!

PodFile

inhibit_all_warnings!

target "MyApp" do
pod 'Typhoon', '2.1.0'
end

target "MyAppTests" do
pod 'Typhoon', '2.1.0'
end

MyAssembly.swift

public class MyAssembly : TyphoonAssembly{
//Some definitions
}

AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {

var assembly : MyAssembly = MyAssembly()
//Always returns „true“
println("Is type of class: \(assembly.isKindOfClass(TyphoonAssembly))")

}

MyComponentTest.swift

import XCTest
import MyApp

class MyComponentTest: XCTestCase {

override func setUp() {
super.setup()
var assembly : MyAssembly = MyAssembly()
//Always returns „false“!
println("Is type of class: \(assembly.isKindOfClass(TyphoonAssembly))")

//Error is thrown „MyApp.MyAssembly is not a sub-class of TyphoonAssembly“
var factory : TyphoonComponentFactory = TyphoonBlockComponentFactory(assembly: assembly) as TyphoonComponentFactory
}
}

最佳答案

为了其他用户的利益:

正如在 Typhoon's Github 上讨论的那样,当 Typhoon CocoaPod 同时包含在应用程序目标和测试目标中时,会发生此错误。

由于应用程序样式测试(设置了 TEST_HOST 标志)现在几乎无处不在,测试目标会自动从主应用程序目标继承依赖项。在 Swift 的情况下,使用名称间距,如果它们在测试目标中重复,则可能会中断。

因此,解决方案是从测试目标中删除 Typhoon 和应用程序的任何其他依赖项,因为它们是继承的。您仍然可以包括特定于测试的依赖项,如下所示:

target :tests, :exclusive => true do
pod 'OCMockito'
pod 'AnotherTestLibrary' #etc . .
end

关于ios - XCTest 中的 Swift TyphoonBlockComponentFactory 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25382348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com