J'essaie d'écrire un test unitaire pour un opérateur supérieur à celui substitué à l'aide d'assertions Fluent en C #. L'opérateur supérieur à dans cette classe est supposé générer une exception si l'un des objets est null.
Habituellement, lorsque j'utilise Fluent Assertions, j'utilise une expression lambda pour mettre la méthode en action. Je lancerais ensuite l'action et utiliserais action.ShouldThrow<Exception>
. Cependant, je ne vois pas comment mettre un opérateur dans une expression lambda.
Je préférerais ne pas utiliser la fonction Assert.Throws()
de NUnit, la contrainte Throws
ou l'attribut [ExpectedException]
Pour des raisons de cohérence.
Vous pouvez essayer cette approche.
[Test]
public void GreaterThan_NullAsRhs_ThrowsException()
{
var lhs = new ClassWithOverriddenOperator();
var rhs = (ClassWithOverriddenOperator) null;
Action comparison = () => { var res = lhs > rhs; };
comparison.Should().Throw<Exception>();
}
Cela ne semble pas assez net. Mais ça marche.
Ou en deux lignes
Func<bool> compare = () => lhs > rhs;
Action act = () => compare();