0
现在我已经在一些项目中被这个问题困住了,所以我很想找到一个好的解决方案。测试中@testable导入对象的运行时类型检查
考虑以下情形:
- 我已经在我的叫
MyObject
的应用程序的目标,这是在MyBusinessLogicObject
使用定义的对象。 - 在
MyBusinessLogicObjectTests
,我有
@testable import
编我的应用程序的软件包,但需要拉一个对象了非泛型集合后,有条件地投:import XCTest @testable import MyApp class MyBusinessLogicObjectTests: XCTestCase { var bizLogicObject: MyBusinessLogicObject! // setUp() etc. func testStuff() { guard let result = bizLogicObject.someOrderedCollectionProperty.first as? MyObject else { XCTFail() return } // more test code here } }
的问题是,即使我可以看到bizLogicObject.someOrderedCollectionProperty.first
的类型是MyObject
有条件转换失败。
我知道这是因为当你@testable import
这样,你的应用程序中的所有类型都会被复制。因此,运行时检查实际上最终是针对两种不同的类型,这就是它失败的原因。
有谁知道如何在测试中获得有条件转换以通过,在哪里需要转换为在您的应用程序中定义的类型?