我正在使用 Kiwi 为我的应用程序编写测试。
我编写了测试来测试我的 API。我在测试异步调用的文档中以这个示例为指导: https ://github.com/allending/Kiwi/wiki/Asynchronous-Testing
我的测试很长,所以我对我的问题做了一个简化版本:
describe(@"My Class Name", ^{
context(@"populate", ^{
it(@"download the content", ^{
__block NSString *testResponseObject = nil;
__block NSError *testError = nil;
MyClient *apiClient = [MyClient sharedClient];
NSMutableURLRequest *request = [apiClient requestWithMethod:@"DELETE" path:@"my/path" parameters:nil];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
testResponseObject = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
testError = error;
}];
[apiClient enqueueHTTPRequestOperation:operation];
[[expectFutureValue(testResponseObject) shouldEventuallyBeforeTimingOutAfter(100)] equal:@"Expected Content"];
[[expectFutureValue(testError) shouldEventuallyBeforeTimingOutAfter(100)] shouldBeNil];
});
});
});
问题是,如果一切都按预期工作并且操作成功,则永远不会调用失败块,而不是 NSError 的 nil 我得到 KWAsyncVerifier。
我猜那是因为 Kiwi 等待执行引用 testError 的块,而这永远不会发生,这就是为什么我将 KWAsyncVerifier 卡在 testError 而不是 nil 中的原因。
有没有其他方法可以测试这个?