2014-02-05 26 views
9

我們試圖創建一個單元測試(使用OCMock,但對其他框架開放),它可以嘲笑類加載有副作用的類。對類加載產生副作用的iOS嘲笑類

我們有一個跟蹤類,將調用包裝到其他跟蹤庫,如Flurry。

許多其他跟蹤庫(特別是Flurry)在類初始化時執行代碼。

單元測試失敗,因爲代碼無法在單元測試環境中執行。理想情況下,我們想用模擬/存根替換Flurry類。

- (void) testConstruction { 
    [Flurry class]; 
} 

當該代碼被稱爲會試圖使用SCNetworkReachability和接收exceptions ...

我們怎樣才能存根/模擬出呼叫具有靜態實現類似下面的亂舞?

[Flurry setAppVersion:@"1.0"]; 
[Flurry setCrashReportingEnabled:NO]; 

回答

3

我就從我使用的測試(從框架搜索路徑/庫搜索路徑中刪除)構建配置中刪除亂舞。我會通過抓取Flurry頭文件並用空方法創建我自己的實現來創建自己的虛擬Flurry。最後,如果我關心Flurry被調用,我會用OCMock來嘲笑我的假課程。

+0

嗯,這將工作。讓我給一個鏡頭。 –