Swift 测试中@testable导入对象的运行时类型检查
我已经在一些项目中被这个问题困扰,所以我渴望找到一个好的解决方案 考虑以下场景:Swift 测试中@testable导入对象的运行时类型检查,swift,tdd,Swift,Tdd,我已经在一些项目中被这个问题困扰,所以我渴望找到一个好的解决方案 考虑以下场景: 我在我的应用程序目标中定义了一个名为MyObject的对象,该对象在MyBusinessLogicObject中使用 在MyBusinessLogicObjectTests中,我已@testable import编辑了我的应用程序包,但在从非通用集合中拉出对象后需要有条件地强制转换: import XCTest @testable import MyApp class MyBusinessLogicObject
- 我在我的应用程序目标中定义了一个名为
的对象,该对象在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 } }
MyObject
条件转换失败。
我理解这是因为当你像这样@testable import
时,你应用程序中的所有类型都会被复制。因此,运行时检查实际上针对两种不同的类型,这就是它失败的原因
是否有人知道如何使测试中的条件强制转换通过,而您需要强制转换到应用程序中定义的类型?确保
MyObject
仅包含在应用程序目标中,而不同时包含在应用程序目标和测试目标中。您找到解决方案了吗?我也面临着这个问题。。