例外のみの検証を簡略化
Closed this issue · 3 comments
in-async commented
戻り値つきの TestActual<TReturn>
の場合、例外のみを検証するのに今だと
TestAA.Act(() => int.Parse("abc")).Assert(ret => { }, exception: new FormatException());
と書く必要があるが、例外のみを検証するオーバーロードを追加して、
TestAA.Act(() => int.Parse("abc")).Assert(exception: new FormatException());
としたい。
in-async commented
シグネチャ候補:
public partial readonly struct TestActual<TReturn> {
public void Assert(Exception exception, string message = null) { ... }
}
in-async commented
本当に例外のみを検証するのであれば、型パラメーターで受けるのも良さそう。
public partial readonly struct TestActual<TReturn> {
public void Assert<TException>(string message = null) { ... }
}
Usage:
TestAA.Act(() => int.Parse("abc")).Assert<FormatException>();
in-async commented
expected な例外をインスタンスで指定する現在の方法では、パラメーター付きコンストラクターしかない例外の期待値を生成する場合に不必要に面倒になる。
またほぼ全てのケースにおいて例外検証はその型のみのチェックで十分なことから、Exception
インスタンスではなく例外の Type
を expected として受け取るように変更した方が利便性が良さそうだ。
// 現在
TestAA.Act(() => int.Parse("abc")).Assert(exception: new FormatException());
// 変更後
TestAA.Act(() => int.Parse("abc")).Assert(exception: typeof(FormatException));
TestAA.Act(() => int.Parse("abc")).Assert<FormatException>();