非同期メソッドが具体的な例外をスローすることを確認しようとしています。
そのために、MSTEST と FluentAssertions 2.0.1 を使用しています。
Codeplex に関するこのディスカッションを確認し、非同期例外メソッドでどのように機能するかを確認するために、FluentAssertions 非同期テストに関する別のリンクを確認しました。
しばらくして「プロダクション」コードを操作しようとした後、Fluentassertions の偽の aync クラスに切り替えました。結果のコードは次のようになります (このコードを[TestClass]
:の中に入れます)。
[TestMethod]
public void TestThrowFromAsyncMethod()
{
var asyncObject = new AsyncClass();
Action action = () =>
{
Func<Task> asyncFunction = async () =>
{
await asyncObject.ThrowAsync<ArgumentException>();
};
asyncFunction.ShouldNotThrow();
};
}
internal class AsyncClass
{
public async Task ThrowAsync<TException>()
where TException : Exception, new()
{
await Task.Factory.StartNew(() =>
{
throw new TException();
});
}
public async Task SucceedAsync()
{
await Task.FromResult(0);
}
}
問題は、それShouldNotThrow
が有効でないことです:
コードは ShouldNotThrow メソッドを認識しません。コンパイルしようとすると、次のエラーが表示されます。 ' 無効な引数があります
ありがとう。
解決
2.0.1 FA バージョンはこの機能をサポートしておらずShouldNotThrow
、次のリリース 2.1 (来週近く) に含まれる予定です。
注: ShouldThrow は 2.0.1 バージョンで既にサポートされています。