2011-04-20 46 views
0

我有一個SenTest類,我試圖寫它使用類別來覆蓋控制器類中的方法。我想讓我的模擬控制器類調用SenTest類中的一個方法來確定如何爲各種測試工作。SenTest,Objective-C,類別奇怪

例如:

  1. 設置在命名爲testFoo方法的變種。
  2. 在testFoo中,調用我的模擬控制器的重寫方法。
  3. 讓它回調到SenTest單例以找出testFoo的行爲。

這是可能的,還是我是白癡?

+0

這是什麼類別?把控制器變成模擬?也就是說,覆蓋測試單身人士的位呢? – 2011-04-20 22:24:34

+0

該類別是覆蓋我的控制器中建立網絡連接的方法。我想在單元測試中避免這種情況。 – Genericrich 2011-04-21 11:17:04

+0

我想我可能想在這裏使用「關聯引用」,這可以讓我在被測試的控制器上設置測試參數字典,然後在類別覆蓋方法中檢索它以獲取適當的數據開一個給定的測試。今天會試試這個。 – Genericrich 2011-04-21 11:23:13

回答

0

原來這樣做的訣竅是在類別代碼中創建關聯引用,而不是在SenTest情況下。

因此,例如,在類聲明的:

-(void)fakeMethodToSetTestData:(NSDictionary *)data; 

而且在這個方法設置的關聯參考存儲你的數據「相關」與「自我」。

在您的測試用例中調用此對象,傳遞您的數據。

然後在您的測試案例,請致電:

-(void)realMethodInCategoryWhichIsBeingOverridden; 

而在你的類此方法的實現,從你的第一種方法設置的關聯參考檢索數據。

這將允許您在控制器上設置測試數據,以便您可以劫持代表鏈,例如,防止第二種方法進入網絡並將測試數據返回到控制器的代碼中。