ios - mock 期望和中央调度

标签 ios grand-central-dispatch kiwi

我有一个简单的管理器对象,并在 kiwi 中使用模拟,我想检查当我调用 [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];
    });

最佳答案

试试这个:

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

如果需要,您还可以使用shouldEventuallyBeforeTimingOutAfter(seconds)

关于ios - mock 期望和中央调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635492/

相关文章:

objective-c - 如何使用kiwi测试函数调用的参数?

ios - 尝试从我的应用程序打开其他应用程序时出现 Swift 错误 |操作无法完成。 (操作系统状态错误-10814。)

ios - 更改全局 UIBarButtonItem 外观

ios - DispatchGroup 和 Realm

iOS - API 同步

objective-c - 应用程序在分配队列时阻塞

ios - Kiwi 单元测试在 Xcode 中从未失败

ios - stub 方法并将其返回值动态设置为输入参数

由于手机号码无效,iOS Swift 调用崩溃

ios - 集成 Facebook 以从 iPhone 应用程序发布内容