12

Silverlight ユニット テスト フレームワークは、Async 呼び出しを処理するプロセスを定義します (Microsoft.Silverlight.Testing.SilverlightTest からテスト クラスを派生させ、Asynchronous 属性を追加し、EnqueueXXX メソッドを使用します)。SpecFlow がテスト クラスとステップの間に提示する分離を考慮します。

  • これらのツールは、テスト内で非同期に動作する Silverlight メソッド呼び出し (Web サービス呼び出しの実行など) を待機するようにできますか?
  • できない場合、SpecFlow テスト ファイルでこの動作を処理するためのガイダンスは何ですか? (おそらく、イベント ハンドラーでトリップして待機する AutoResetEvent を使用しますか?)
4

3 に答える 3

2

これはおそらく手遅れであることはわかっていますが、ここに行きます。

Silverlight 非同期呼び出しの場合、Specflow AsyncContext API を使用できます

https://github.com/techtalk/SpecFlow/wiki/Testing-Silverlight-Asynchronous-Code

ここで開発されていたとき、私はこれについてブログを書きました

http://rburnham.wordpress.com/2011/05/13/testing-silverlight-asynchronous-code-with-specflow/

概念を説明するのに役立ちます。

于 2012-01-17T22:48:52.453 に答える
1

この質問を見て賛成票を投じた人は皆、誰かが素晴らしくエレガントな答えを出すのを待っていたと思いますが、ここでそれが起こるとは思えません. 今すぐ使える答えが必要な人を助けるために...

私が他の単体テストの状況で行ったことは、質問で述べたように AutoResetEvent を使用することです:

AutoResetEvent MyAutoReset = new AutoResetEvent();
[TestMethod]
public void MyTestMethod()
{
   var MyItem.GetItem(x => 
      {
         // Return handler
         MyAutoReset.Set();
      });
   MyAutoReset.WaitOne(5000, false));
}

明らかに、このアプローチには考慮すべき点がいくつかありますが、アイデアは理解できます。

于 2011-04-15T22:22:04.370 に答える