0

[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];
    });
4

1 に答える 1

1

これを試して:

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

必要に応じて使用することもできshouldEventuallyBeforeTimingOutAfter(seconds)ます。

于 2013-05-19T15:22:23.750 に答える