人:
我正在开发一个应用程序,并使用单元测试来构建它。
但是,我现在处于需要测试异步调用的情况。 例如,
- (void)testUserInfoBecomesValidWhenUserIsBuiltSuccessfully
{
if ( ![userBuilder userInfoUpToDate] )
{
[userBuilder buildUser];
}
STAssertTrue([userBuilder userInfoUpToDate], @"User information is not valid before building the user");
}
测试此类内容的一般做法是什么? userInfoUpToDate应该异步更新。
谢谢! 威廉
答案 0 :(得分:4)
有时会尝试使用单元测试来测试通常不会测试的东西。这主要来自误解和测试一切的愿望。然后你意识到你不知道如何用单元测试来测试它。
你最好问自己 - 我在这里测试什么?
在请求完成之前,我是否测试数据不可用?
然后你可以编写测试的非异步版本,它会在请求完成后检查数据是否可用。
我是否在请求后测试响应是否正确保存?
您也可以使用逻辑中的标记对其进行测试。
您可以在不运行异步测试的情况下执行所有逻辑测试。
所以在底部我甚至会问你为什么认为你需要测试异步调用?
单元测试应该快速运行 - 因此将其视为不测试异步调用的另一个原因。想象一下连续集成系统运行这些测试 - 它需要额外的时间。
将你的评论读到另一个答案 - 我认为在测试中使用异步并不常见。例如。肯特贝克在TDD书中。提到并发单元测试是可能的,但非常罕见的情况。
那么 - 什么&为什么你真的想测试?
答案 1 :(得分:2)