2017-05-10 24 views
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這樣,你的應用程序中的所有類型都會被複制。因此,運行時檢查實際上最終是針對兩種不同的類型,這就是它失敗的原因。

有誰知道如何在測試中獲得有條件轉換以通過,在哪裏需要轉換爲在您的應用程序中定義的類型?

回答

-1

確保MyObject僅包含在應用程序目標中,而不包含在應用程序目標和測試目標中。