清除Kiwi中类方法的存根

时间:2014-06-18 22:08:40

标签: objective-c unit-testing kiwi

我想测试从NSUserDefaults读取和写入值的方法。以下是read方法的样子:

+ (NSDate *)initialImportDate
{
    return [[NSUserDefaults standardUserDefaults] objectForKey:STBInitialImportDateKey];
}

我想要保留[NSUserDefaults standardUserDefaults]而我以前做过,而且效果很好。假设我们正在存根类方法,我们有明确的类存根

it(@"should load date from NSUserDefaults", ^{
     NSDate *expectedDate = [NSDate date];
     id mockNSDefaults = [NSUserDefaults nullMock];
     [NSUserDefaults stub:@selector(standardUserDefaults) andReturn:mockNSDefaults];

     [[mockNSDefaults should] receive:@selector(objectForKey:) andReturn:expectedDate withArguments:@"ImportDate"];

     [[[Importer initialImportDate] should] equal:expectedDate];

     [KWMock clearStubs];
});

当使用Kiwi 2.2.4时,我在最后一行得到错误,没有类方法,只有第一个实例。到目前为止,我没有存根对象,这样做是否合法?

[[NSUserDefaults class] clearStubs];

1 个答案:

答案 0 :(得分:0)

是的,您可以安全地在类对象上调用clearStubs,因为objetive-c运行时将消息调度到类似于常规对象的类,假设选择器当然存在于目标类中。