使用OCunit在iOS上测试异步代码

Pio*_*pla 7 iphone objective-c ios

有没有人知道任何允许使用OCUnit测试异步代码的现有库?我正在考虑类似GHAsyncTestCase但是从中传递的东西SenTestCase.

我问,因为如果我找不到任何我将要移植GHAsyncTestCase到OCUnit,但我不想复制其他人已完成的工作.

Luk*_*ath 11

彼得:

您可能对我使用Mimic所做的工作感兴趣,Mimic是一个用Ruby编写的网络存根工具,它允许您在高级别存根请求,并且可以使用提供的包装器从Objective-C中使用.

关于异步测试,请看一下我写的一个名为AssertEventually的小实用程序.

此示例显示Mimic和assertEventually正在执行.

另外,你可能想看一下Kiwi - 它是一个很好的小型Objective-C测试框架,它建立在OCUnit之上.我最近贡献了一个补丁来将我的AssertEventually行为移植到Kiwi,它可以让你写下这样的东西:

id someObject = nil;
[do SomethingThatFetchesSomeObjectAsynchronously];
[[theObject(&someObject) shouldEventually] equal:@"some result"];
Run Code Online (Sandbox Code Playgroud)


hfo*_*sli 7

AGAsyncTestHelper采用略微不同的方法,AssertEventually因为它正在评估表达式而不是检查指针是否有新结果.使用AGAsyncTestHelper的一个优点是它可以用于块,委托 - 回调等等.

WAIT_WHILE(<expression_to_evaluate>, <max_duration>);
Run Code Online (Sandbox Code Playgroud)

回答这个问题

id someObject = nil;
[self doSomethingThatFetchesSomeObjectAsynchronously];
WAIT_WHILE(self.someObject == nil, 1.0); 
Run Code Online (Sandbox Code Playgroud)