2016-01-26 5 views
22

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

通常、Fluent Assertionsを使用する場合、ラムダ式を使用してメソッドをアクションに配置します。私はその後、アクションを実行し、action.ShouldThrow<Exception>を使用します。しかし、演算子をラムダ式に入れる方法を理解することはできません。

一貫性のため、NUnitのAssert.Throws()Throws、または[ExpectedException]という属性を使用しないでください。

答えて

33

この方法をお試しください。

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

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

    comparison.ShouldThrow<Exception>(); 
} 

十分にきれいに見えません。しかし、それは動作します。

行または2行

Func<bool> compare =() => lhs > rhs; 
Action act =() => compare(); 
関連する問題