2016-01-26 10 views
22

Ich versuche, einen Komponententest für Fluid Assertions in C# zu schreiben. Der Größer-als-Operator in dieser Klasse soll eine Ausnahme auslösen, wenn eines der Objekte null ist.Wie wird Fluent Assertions verwendet, um in Ungleichheitstests auf Ausnahmen zu testen?

Wenn Fluent Assertions verwendet wird, verwende ich normalerweise einen Lambda-Ausdruck, um die Methode in Aktion zu bringen. Ich würde dann die Aktion ausführen und action.ShouldThrow<Exception> verwenden. Ich kann jedoch nicht herausfinden, wie man einen Operator in einen Lambda-Ausdruck einfügt.

Ich würde lieber NUnit Assert.Throws(), Throws Constraint oder das [ExpectedException] Attribut für Konsistenzen Sake verwenden.

Antwort

33

Sie können diesen Ansatz versuchen.

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

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

    comparison.ShouldThrow<Exception>(); 
} 

Es sieht nicht gut genug aus. Aber es funktioniert.

Oder in zwei Linien

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