2011-01-13 5 views
7

OCUnitで非同期コードをテストできる既存のライブラリを知っている人はいますか? GHAsyncTestCaseのようなものを考えていますが、それはSenTestCaseから配信されます。iOSの非同期コードをOCunitでテストする

私が気付いていない場合は、GHAsyncTestCaseをOCUnitに移植するつもりですが、すでに他の人が行っている作業を複製したくないからです。

+0

に答える

WAIT_WHILE(<expression_to_evaluate>, <max_duration>); 

私は前にこれをやって、誰のかわからないが、私は聞いています。なぜ単体テストを実行するために通常使用されるフレームワークで非同期動作をテストする必要があると感じますか?あなたはあなたの行動の半分を信頼しませんか?別々にテストすることはできませんか?あなたは本当に統合テストを書いていますか? – Jonah

+0

@Jonah、そうです、本当に便利ですが、時にはネットワーク層全体をモックアップするのが面倒です。それで、ローカルサーバーとそれに対する統合テストを実行するだけの魅力があります。 –

答えて

11

ピョートル:

あなたは、私がMimicでやった仕事に興味があるかもしれません、あなたはハイレベルの要求をスタブし、あなたのObjective-Cから使用することができますRubyで書かれたネットワークスタブツール提供されたラッパーを使用します。

非同期テストに関しては、AssertEventuallyという小さなユーティリティを見てください。

This exampleは、MimicとassertEventuallyの両方の動作を示しています。

さらに、Kiwiを参照してください。OCUnitの上に構築されたObjective-Cテストフレームワークです。それは式の評価ではなく、新しい結果のためのポインタをチェックしているので、

id someObject = nil; 
[do SomethingThatFetchesSomeObjectAsynchronously]; 
[[theObject(&someObject) shouldEventually] equal:@"some result"]; 
+0

これは私が探していたものです。ミミックはかなり面白そうに見えますが、私はそれを見ます。ありがとうございました! –

+0

Assert最終的には便利だと思うが、リンクは死んでいる。どんな助け? – AndrewCr

+0

私は '-shouldEventually'ビヘイビアでKiwiを使用しています。それがあなたの手仕事だったことがわかりました。ありがとう! –

7

AGAsyncTestHelperAssertEventuallyよりもわずかに異なるアプローチを取る:私は最近、あなたがのようなものを書くことができますキウイを超えるポート私AssertEventually行動にパッチを貢献しました。 AGAsyncTestHelperを使用する利点の1つは、ブロック、デリゲートコールバックおよびその他のものに使用できることです。質問

id someObject = nil; 
[self doSomethingThatFetchesSomeObjectAsynchronously]; 
WAIT_WHILE(self.someObject == nil, 1.0); 
関連する問題