0

Silverlight の単体テストを作成する場合、テスト フレームワークには非同期呼び出しを支援する機能が組み込まれているようですが、テスト メソッド内のみです。呼び出しているメソッドの子メソッドに Async 呼び出しがある場合はどうなりますか。

例として、Specflow を使用して ViewModel をテストします。コマンドの Execute メソッドを呼び出し、そのコマンドが Web サービスを非同期的に呼び出します。結果をアサートする前に while コマンドが完了していることを確認するにはどうすればよいですか?

例として、これはコマンドです

    [Asynchronous]
    [When(@"I press calculate")]
    public void WhenIPressCalculate()
    {
        _helloWorldViewModel.CalculateCommand.Execute(null);
    }

続行する前に、コマンド全体が完了するまで待つ必要があります。

4

2 に答える 2

0

実行が終了した終了条件で同じメソッドでループを作成します。

于 2011-06-01T12:02:01.073 に答える
0

コールバックが UI スレッドにマーシャリングされるため、ネットワーク サービスを呼び出すときにループが機能しません。ループが条件のためにループしている場合、コールバックがスレッドの終了を待機しているため、デッドロックが発生します。

とにかく、この問題を解決しました。specflow の担当者が同時にこれに取り組んでおり、解決策が進行中であることがわかりました。プレリリースビルドで動作するようになりました。

ここにブログエントリを書きましたhttp://rburnham.wordpress.com/2011/05/13/testing-silverlight-asynchronous-code-with-specflow/

これはプレリリース ビルドで行われたため、変更される可能性があります。変更された場合は、更新する時間が得られることを願っています。

于 2011-06-02T09:57:09.750 に答える