Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 多个预期会导致waitForExpectationsWithTimeout崩溃_Ios_Objective C_Xcode_Asynchronous_Xctestexpectation - Fatal编程技术网

Ios 多个预期会导致waitForExpectationsWithTimeout崩溃

Ios 多个预期会导致waitForExpectationsWithTimeout崩溃,ios,objective-c,xcode,asynchronous,xctestexpectation,Ios,Objective C,Xcode,Asynchronous,Xctestexpectation,下面是我正在使用XctestExpection在Xcode中测试的异步函数 -(void)syncData:(void (^)(NSString *type, NSError *error))completionBlock { [self fetchAWithCompletionBlock:^ { completionBlock(@"a",nil); }]; [self fetchBWithCompletionBlock:^ { completionBlock(@"b",nil

下面是我正在使用XctestExpection在Xcode中测试的异步函数

-(void)syncData:(void (^)(NSString *type, NSError *error))completionBlock {
[self fetchAWithCompletionBlock:^ {
    completionBlock(@"a",nil);
}];

[self fetchBWithCompletionBlock:^ {
    completionBlock(@"b",nil);
}];

[self fetchCWithCompletionBlock:^ {
    completionBlock(@"c",nil);
}];
}
为了测试代码,我创建了3个期望值,等待每个异步调用完成

[appDelegate syncData:^(NSString *type, NSError *error) {
    if ([type isEqualToString:@"a"]) {
        [expectation1 fulfill];
    }
    if ([type isEqualToString:@"b"]) {
        [expectation2 fulfill];
    }
    if ([type isEqualToString:@"c"]) {
        [expectation3 fulfill];
    }
}];
当我使用默认值等待期望实现时

[self waitForExpectationsWithTimeout:60 handler:^(NSError *error) {}
但是这会导致SIGABRT出现以下错误:
***在-[XCTestExpectation fulfill],/Library/Caches/com.apple.xbs/Sources/XCTest\u Sim/XCTest-9530/XCTestFramework/Classes/XCTestCase+AsynchronousTesting.m:450中断言失败


我已经使用
dispatch\u groups
成功地测试了该功能,并且效果良好。但无法理解为什么XTestExpection会引发多个期望的异常情况。

对此有任何更新吗?即使是我也面临着这样的问题:您的方法
-(void)syncData:(void(^)(NSString*type,NSError*error))completionBlock
正在执行它的
completionBlock
不止一次(3次)。
-waitForExpectationsWithTimeout:
将等待所有的期望都得到满足(在本例中为3次)。对此有任何更新吗?即使是我也面临着这样的问题:您的方法
-(void)syncData:(void(^)(NSString*type,NSError*error))completionBlock
正在执行其
completionBlock
不止一次(3次)。
-waitForExpectationsWithTimeout:
将等待所有期望得到满足(在本例中为3次)。