所以我發現在編寫XCTests或UI測試時,我無法訪問我的應用程序委託的MOC。我收到了一些錯誤,說「我是MyAppUITests,我無法訪問MyApp的東西。」如何使用Xcode 7 UITests在我的視圖控制器中使用模擬MOC?
很酷,沒問題,我寫了我的所有代碼來接受任何MOC,然後在setup()中做了一個模擬MOC,以便每個XCTest都有一個新的石板,它不會觸及我的實際數據。將我的應用導入爲可測試的。繁榮,一切正常,我不必改變目標,也不必在我的對象中編寫任何代碼來「強制它爲測試工作!」
問題是我不知道如何爲UI測試和故事板做到這一點。我的大多數視圖控制器都通過viewdidload從appdelegate獲取我的MOC。我無法弄清楚如何告訴它使用模擬moc,以便每個測試都可以開始清理,並且不會使用我的實際核心數據存儲,但在未測試時也能正常工作。這裏的目標是讓主應用程序代碼知道它正在被測試時沒有任何引用。
必須有一個乾淨的方法來做到這一點,而不會變得醜陋,改變目標等。一些像我的XCTests一樣工作,但用於UI。我發現這個:How to start with empty Core Data for every UI Test Assertion in Swift?,但沒有人回答。該用戶提出了類似的問題,但我認爲有錯誤的方法(清空核心數據而不是使用模擬MOC)。
想法?
對於它的價值,我構建了一個Mac應用程序。
我目前只有一個視圖控制器,所以我不需要執行一下。我的問題是,使用UITest功能和故事板,我如何提供帶MOC的視圖控制器?在準備segue方法時很容易做到這一點,但由於測試不在應用程序中,因此我不確定如何在測試時首次啓動時爲其提供模擬MOC。 UITests似乎沒有實例化視圖控制器,它點擊屏幕上的按鈕。 – user5503635