OCMock 測試類方法
羅朝輝(http://www.shnenglu.com/kesalin)
CC許可,轉(zhuǎn)載請注明出處
使用 OCMock 進(jìn)行 unit test 時,我們無法使用 stub 或 expect 測試類方法,那么又該怎樣測試類方法呢?
下面是一個解決辦法:在測試類中的非類方法 wrap 一下類方法,然后測試 wrap 方法。
比如:Utilities 有個類方法:
+ (NSString *) stringDate:(NSDate *)date withForamt:(NSString *)dateFormat;
我們在 UtilitiesTests 測試類中新建一個同樣名稱的測試函數(shù),然后在該函數(shù)中轉(zhuǎn)調(diào) Utilities 的類方法,最后在 test 中對這個 wrap 函數(shù)進(jìn)行測試:
// stringDate:withForamt
//
- (NSString *) stringDate:(NSDate *)date withForamt:(NSString *)dateFormat
{
return [UIHUtilities stringDate:date withForamt:dateFormat];
}
- (void) testStringDateWithFormat
{
UIHUtilitiesTests *realObject = [[[UIHUtilitiesTests alloc] init] autorelease];
id mock = [OCMockObject partialMockForObject:realObject];
NSDate * date = [[NSDate alloc] initWithTimeIntervalSince1970:0];
NSString * tgtFmt = @"yyyy/MM/dd";
NSString * tgtValue = @"1970/01/01";
NSString * returnValue = [mock stringDate:date withForamt:tgtFmt];
GHAssertEqualStrings(tgtValue, returnValue, @"Should have returned the expected formatted date in string format.");
}