2012-07-18 84 views
1

我在開發iOS應用程序時終於開始測試我的代碼。但是,我很想知道更多關於其他人如何創建可測試代碼的知識,尤其是當涉及將虛假對象注入到受測試的類中時。到目前爲止,這是我如何做到這一點:在iOS中進行單元測試時正確地依賴注入

// 1)初始CUT與假貨(構造函數注入) A * a = [[A alloc] initWithB:C:D:.....];

// 2)公開依賴性作爲屬性(屬性注入) a.B = myB;

我更喜歡1),因爲我不喜歡公開任何內部數據作爲屬性,除非我真的需要。

我的問題是:在處理objective-c和iOS測試框架時,有沒有其他方法/更好/更有效的方法來進行屬性注入?

回答

0

現在已經有一段時間了,自從我問這個問題以來,我有機會使用不同的解決方案。我現在在大多數情況下更喜歡組合。如果一個類A依賴B類,我將初始化一個與B的一個實例,因爲這樣的:

A* myA = [[A alloc] initWithB:myB]; 

除了這一點,我將暴露乙作爲屬性,以便它可以在運行時被切換。在某些情況下,接口模式甚至更可取。

- (id)initWithBy:(id<bProtocol>)aB; 

這顯然不適合所有的情況,但我發現它注入依賴到我的班,從而使它們更容易測試的好方法。