in-async/TestAA

例外のみの検証を簡略化

Closed this issue · 3 comments

戻り値つきの TestActual<TReturn> の場合、例外のみを検証するのに今だと

TestAA.Act(() => int.Parse("abc")).Assert(ret => { }, exception: new FormatException());

と書く必要があるが、例外のみを検証するオーバーロードを追加して、

TestAA.Act(() => int.Parse("abc")).Assert(exception: new FormatException());

としたい。

シグネチャ候補:

public partial readonly struct TestActual<TReturn> {
    public void Assert(Exception exception, string message = null) { ... }
}

本当に例外のみを検証するのであれば、型パラメーターで受けるのも良さそう。

public partial readonly struct TestActual<TReturn> {
    public void Assert<TException>(string message = null) { ... }
}

Usage:

TestAA.Act(() => int.Parse("abc")).Assert<FormatException>();

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>();