Как использовать Fluent Assertions для проверки исключения в тестах на неравенство?
Я пытаюсь написать unit test для большего, чем переопределенный оператор, используя Fluent Assertions в С#. Чем больше оператор в этом классе, тем выше вероятность того, что любой из объектов будет иметь значение null.
Обычно при использовании Fluent Assertions я использую лямбда-выражение, чтобы применить метод к действию. Затем я запустил действие и использовал action.ShouldThrow<Exception>
. Однако я не могу понять, как поставить оператор в выражение лямбда.
Я бы предпочел не использовать NUnit Assert.Throws()
, атрибут Throws
Constraint или [ExpectedException]
для согласований.
Ответы
Ответ 1
Вы можете попробовать этот подход.
[Test]
public void GreaterThan_NullAsRhs_ThrowsException()
{
var lhs = new ClassWithOverriddenOperator();
var rhs = (ClassWithOverriddenOperator) null;
Action comparison = () => { var res = lhs > rhs; };
comparison.ShouldThrow<Exception>();
}
Это не выглядит достаточно аккуратно. Но он работает.
Или в двух строках
Func<bool> compare = () => lhs > rhs;
Action act = () => compare();