TDD:unit testingasynchronous调用
球员:
我正在开发一个应用程序,并使用unit testing进行构build。
但是,我现在处于需要testingasynchronous调用的情况。 例如,
- (void)testUserInfoBecomesValidWhenUserIsBuiltSuccessfully { if ( ![userBuilder userInfoUpToDate] ) { [userBuilder buildUser]; } STAssertTrue([userBuilder userInfoUpToDate], @"User information is not valid before building the user"); }
testing这些东西的一般做法是什么? userInfoUpToDate预计将被asynchronous更新。
谢谢! 威廉
有时候有一种诱惑来testing你通常不用unit testingtesting的东西。 这主要来自误解和想testing一切的愿望。 然后你意识到你不知道如何用unit testing来testing它。
你最好问自己 – 我在这里testing什么?
在请求完成之前testing数据是否可用?
然后,您可以编写testing的非asynchronous版本,在请求完成后检查数据是否可用。
请求后,我testing响应保存是否正确?
您也可以在您的逻辑中使用标志进行testing。
你可以做所有的逻辑testing,而不需要运行asynchronoustesting
所以在底部,我甚至会问你为什么你认为你需要testingasynchronous调用?
unit testing应该很快运行 – 所以认为这是另一个不testingasynchronous调用的原因。 想象一下运行这些testing的持续集成系统 – 这将需要额外的时间。
并阅读您的意见,以另一个答案 – 我认为在testing中使用asynchronous是不常见的。 例如TDD书中的Kent Beck。 提到并发unit testing是可能的,但非常罕见的情况。
那么 – 你为什么要testing?
使用运行循环,轮询直到完成或达到超时: http : //codely.wordpress.com/2013/01/16/unit-testing-asynchronous-tasks-in-objective-c/