使用OCunit在iOS上testingasynchronous代码
有谁知道任何现有的库,允许与OCUnittestingasynchronous代码? 我正在考虑像GHAsyncTestCase
,但从SenTestCase
。
我问,因为如果我没有find任何我要将GHAsyncTestCase
到OCUnit,但我不想重复别人已经完成的工作。
彼得:
你可能对我用Mimic做的工作感兴趣, Mimic是用Ruby编写的一个networking桩工具,它允许你在高层存根请求,并可以使用提供的包装器从你的Objective-C中使用。
关于asynchronoustesting,请看看我写的叫做AssertEventually的一个小工具。
这个例子显示了Mimic和assertEventually在行动。
另外,你可能想看看Kiwi–这是一个非常棒的Objective-Ctesting框架,build立在OCUnit之上。 我最近贡献了一个补丁来将我的AssertEventually行为移植到Kiwi上,它可以让你写下如下的东西:
id someObject = nil; [do SomethingThatFetchesSomeObjectAsynchronously]; [[theObject(&someObject) shouldEventually] equal:@"some result"];
AGAsyncTestHelper采用与AssertEventually
稍有不同的方法,因为它正在评估expression式而不是检查新的结果的指针。 使用AGAsyncTestHelper的一个好处是它可以用于块,委托callback和什么。
WAIT_WHILE(<expression_to_evaluate>, <max_duration>);
回答这个问题
id someObject = nil; [self doSomethingThatFetchesSomeObjectAsynchronously]; WAIT_WHILE(self.someObject == nil, 1.0);