web-dev-qa-db-ja.com

Fluent Assertionsを使用して不等式テストの例外をテストする方法は?

C#でFluent Assertionsを使用して、オーバーライドされた演算子よりも大きいユニットテストを作成しようとしています。このクラスの大なり演算子は、いずれかのオブジェクトがnullの場合に例外をスローすることになっています。

通常、Fluent Assertionsを使用する場合、ラムダ式を使用してメソッドをアクションに入れます。次に、アクションを実行し、_action.ShouldThrow<Exception>_を使用します。ただし、演​​算子をラムダ式に入れる方法はわかりません。

一貫性のために、NUnitのAssert.Throws()Throws Constraint、または_[ExpectedException]_属性を使用したくないです。

40
Nathan Bierema

このアプローチを試すことができます。

[Test]
public void GreaterThan_NullAsRhs_ThrowsException()
{
    var lhs = new ClassWithOverriddenOperator();
    var rhs = (ClassWithOverriddenOperator) null;

    Action comparison = () => { var res = lhs > rhs; };

    comparison.Should().Throw<Exception>();
}

きれいに見えません。しかし、それは機能します。

または2行で

Func<bool> compare = () => lhs > rhs;
Action act = () => compare();
64
Kote