Насмешливые ожидания и Grand Central Dispatch

У меня есть простой объект менеджера, и, используя mocks в киви, я хочу проверить, когда я звоню [aPOIManager fetchNear:location] это вызывает downloadPOIsNear:completionBlock: на его загрузчик.

Все работало нормально, пока я не решил отправить вызов загрузчику внутри большой центральной диспетчерской.

Вызов асинхронный, теперь тест не пройден. У Kiwi есть возможность проверять асинхронные значения, но не проверять асинхронные вызовы.

Вот часть моего теста:

it(@"should call the proximity downloader", ^{

      CLLocation *location = [[CLLocation alloc] initWithLatitude:1.0f longitude:1.0f];

      id<RMProximityDownloader> mockDownloader =
      [KWMock mockForProtocol:@protocol(RMProximityDownloader)];

      [[(NSObject*)mockDownloader should] receive:@selector(downloadPOIsNear:completionBlock:)];

      RMPOIManager *aPOIManager = [[RMPOIManager alloc] initWithDownloader:mockDownloader];

      [aPOIManager fetchNear:location];
    });

1 ответ

Решение

Попробуй это:

[[(NSObject*)mockDownloader shouldEventually] receive:@selector(downloadPOIsNear:completionBlock:)];

Вы также можете использовать shouldEventuallyBeforeTimingOutAfter(seconds) если нужно.

Другие вопросы по тегам