【发布时间】:2015-02-15 12:10:36
【问题描述】:
我创建了以下类:
@implementation BCGlobalConstantBox
+ (instancetype)sharedInstance {
static BCGlobalConstantBox *instance = nil;
static dispatch_once_t predicate;
dispatch_once( &predicate, ^{
instance = [[self alloc] init];
});
return instance;
}
- (NSString *)someMethod {
return nil;
}
@end
然后我通过源添加了 OCMock(只需将文件添加到我的项目中)。我不是将它用于测试,而是用作通常调试目标中的临时数据。
以下代码有效:
id goalObj = [BCGlobalConstantBox class];
id mock = [OCMockObject niceMockForClass:goalObj];
// id mock = [OCMockObject partialMockForObject:[goalObj sharedInstance]];
NSArray *arr = @[@1, @2, @3];
[[[mock stub] andReturn:@"123"] someMethod];
id obj = [[BCGlobalConstantBox sharedInstance] someMethod];
但是,如果我取消注释“模拟”初始化而不是工作行,那么整个代码将无法正常工作(obj 必须等于 @“123”)。
我想为整个班级添加功能,而不仅仅是一个对象。我的代码有什么不正确的地方?
附: mockForClass: 和 niceMockForClass: 都不起作用。
【问题讨论】: