在iOS中测试单元测试中的异步调用

在iOS中测试单元测试中的异步调用,第1张

概述在iOS中单机测试异步通话时,我遇到问题. (虽然在视图控制器中工作正常) 有人面临这个问题吗?我已经尝试使用等待功能,但我仍然面临同样的问题. 请建议一个很好的方法来做这个例子. 我认为这个帖子中的许多建议的解决方案有一个问题,如果异步 *** 作不完成,“完成”标志永远不会设置,测试将永久挂起. 我在许多测试中已经成功地使用了这种方法. - (void)testSomething { __bl 在iOS中单机测试异步通话时,我遇到问题. (虽然在视图控制器中工作正常)

有人面临这个问题吗?我已经尝试使用等待功能,但我仍然面临同样的问题.

请建议一个很好的方法来做这个例子.

解决方法 我认为这个帖子中的许多建议的解决方案有一个问题,如果异步 *** 作不完成,“完成”标志永远不会设置,测试将永久挂起.

我在许多测试中已经成功地使用了这种方法.

- (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中测试单元测试中的异步调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1111830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存