1
我一直在使用OCMock來創建存根和嘲笑。儘管如此,我仍在努力嘲笑本地聲明的對象方法。OCMock:嘲笑本地聲明對象的方法
如果我有下面的代碼:
// Example.m
#import "Object.h"
- (NSString *) methodWithLocallyDeclaredObject{
Object *obj = [[Object alloc] init];
NSString *string1 = [obj methodOnObject];
NSString *string2 = [NSString stringWithFormat:@"prepend %@", string1];
return string2;
}
我希望能夠在調用存根出來methodOnObject
因爲它與文件系統進行交互,只是返回一個字符串。我將如何做到這一點?
其實,你可以在存根'Object'的'+ alloc'類的方法並讓它返回一個模擬,然後你可以存儲'methodOnObject'。我沒有發佈這個答案,因爲我認爲在這個答案中提出的兩個選項是非常可取的。 –
啊,好吧,稍微惱人的是,它不能直接完成。我有一種感覺,我會遇到這種情況很多。你有什麼理由說,扼殺alloc類方法是不可取的?選項二是明智的,也非常簡單(感謝@ michael!),但我覺得我的課程將充斥着輔助方法,而這些輔助方法並沒有真正添加任何東西。 – teddy777
這是使用依賴注入的重要原因 - 它使您的代碼更容易測試並避免創建所有這些樣板。 – michaels