0

我想测试从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];
4

1 回答 1

0

是的,您可以安全地调用clearStubs类对象,因为 objetive-c 运行时会像常规对象一样将消息分派给类,当然前提是目标类中存在选择器。

于 2015-04-16T21:06:05.843 回答