C#でFluent Assertionsを使用して、オーバーライドされた演算子よりも大きいユニットテストを作成しようとしています。このクラスの大なり演算子は、いずれかのオブジェクトがnullの場合に例外をスローすることになっています。
通常、Fluent Assertionsを使用する場合、ラムダ式を使用してメソッドをアクションに入れます。次に、アクションを実行し、_action.ShouldThrow<Exception>
_を使用します。ただし、演算子をラムダ式に入れる方法はわかりません。
一貫性のために、NUnitのAssert.Throws()
、Throws
Constraint、または_[ExpectedException]
_属性を使用したくないです。
このアプローチを試すことができます。
[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();