【问题标题】:Clear stubs on class method in Kiwi清除 Kiwi 中类方法的存根
【发布时间】:2014-06-18 22:08:40
【问题描述】:

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

【问题讨论】:

    标签: objective-c unit-testing kiwi


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2015-01-30
      • 2018-08-08
      • 1970-01-01
      相关资源
      最近更新 更多