非同期メソッドで発生する例外をアサートしようとしています。
残念ながら、アサーションは機能しません。ユニットテスト非同期メソッドでの例外のスロー
throw new Exception(...)
がSaveCategoriesAsync(...)
メソッドで呼び出されていることをデバッグで確認しました。
通常、Action
のメソッドは単体テストで動作しますが、非同期では機能しないようです。
私は、アサーションの枠組みとしてフレームワークとFluentAssertionsをあざけるようFakeItEasyを使用しています。
[TestMethod]
public void SaveCategoriesAsync_When_Then()
{
A.CallTo(() => this.articleRepository.GetArticles(A<IList<long>>._)).Returns(new List<ArticleModel>());
Action action = async() => await this.testee.SaveCategoriesAsync(new List<int>());
action.ShouldThrow<Exception>();
}
例外をアサートできるようにするにはどうすればよいですか?事前
異なるスレッドで例外をキャッチすることはできません。 ShouldThrow()メソッドが何か特別なことをしない場合、動作しません。あなたのアサーション・フレームワークが、非同期アクションのための手段を提供して、例外を検出したり、独自のアクションを書くことができるかどうかをチェックします。 – helb