Очистить заглушки в методе класса в Kiwi

Я хотел бы протестировать метод, который считывает и записывает значение из NSUserDefaults. Вот как выглядит метод чтения:

+ (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];

person Gurnetko    schedule 18.06.2014    source источник


Ответы (1)


Да, вы можете безопасно вызывать clearStubs для объекта класса, поскольку среда выполнения objetive-c отправляет сообщения классам, как и для обычных объектов, при условии, конечно, что селектор существует в целевом классе.

person Cristik    schedule 16.04.2015