有人面临这个问题吗?我已经尝试使用等待功能,但我仍然面临同样的问题.
请建议一个很好的方法来做这个例子.
解决方法 我认为这个帖子中的许多建议的解决方案有一个问题,如果异步 *** 作不完成,“完成”标志永远不会设置,测试将永久挂起.我在许多测试中已经成功地使用了这种方法.
- (voID)testSomething { __block BOol done = NO; [obj asyncmethodUnderTestWithCompletionBlock:^{ done = YES; }]; XCTAssertTrue([self waitFor:&done timeout:2],@"Timed out waiting for response asynch method completion");}- (BOol)waitFor:(BOol *)flag timeout:(NSTimeInterval)timeoutSecs { NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:timeoutSecs]; do { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:timeoutDate]; if ([timeoutDate timeIntervalSinceNow] < 0.0) { break; } } while (!*flag); return *flag;}总结
以上是内存溢出为你收集整理的在iOS中测试单元测试中的异步调用全部内容,希望文章能够帮你解决在iOS中测试单元测试中的异步调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)