2015-11-08 73 views
0

我想測試通過XCTest正確安裝插座。我想分享我目前的做法:以編程方式分配VC並檢查網點不是零。我認爲應該是直截了當的,但測試失敗了。單元測試(XCTest)NIB插座爲零

MyViewController *mvc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]; 

[mvc awakeFromNib]; 
XCTAssert([mvc tableViewOutlet], @"Table view should be hooked up"); 

我在想我是否錯過了一些明顯的東西?

+0

測試的主包可能與應用程序的主包不同,因此它不會找到NIB。 –

+0

好的,但是如何通過initWithNibName來分配? mvc is!= nil只是爲了澄清。什麼是解決方案?我應該在目標的Copy Bundle Resources中添加.xib嗎? – Rabiees

+0

您可以將nil傳遞給nib名稱和捆綁包,並仍然返回一個視圖控制器,init方法永遠不會失敗。 –

回答

0

根據這個問題 XIB outlets unit testing

我發現,發鈔銀行都懶加載。您必須調用[mvc loadView]才能連接所有插座。

+0

NIB被惰性加載,但加載它們的適當方式是訪問'view'屬性,而不是直接調用'loadView',因爲這個問題的答案表明是否仔細閱讀。 –

+0

在這種情況下,人們會[mvc.view subViews]並找到tableView或正在測試的,對吧?如果你想測試非視圖中的其他對象,比如陣列控制器呢? – Rabiees

+0

一旦你用'[mvc view];強制加載',你可以像平常一樣訪問你的'IBOutlet's。我只是建議你使用'[mvc view];'而不是'[mvc loadView];'因爲它調用視圖加載機制,因爲它通常被調用(通常你不直接調用loadView)。 –