Подтвердить что ты не робот

Как использовать Fluent Assertions для проверки исключения в тестах на неравенство?

Я пытаюсь написать unit test для большего, чем переопределенный оператор, используя Fluent Assertions в С#. Чем больше оператор в этом классе, тем выше вероятность того, что любой из объектов будет иметь значение null.

Обычно при использовании Fluent Assertions я использую лямбда-выражение, чтобы применить метод к действию. Затем я запустил действие и использовал action.ShouldThrow<Exception>. Однако я не могу понять, как поставить оператор в выражение лямбда.

Я бы предпочел не использовать NUnit Assert.Throws(), атрибут Throws Constraint или [ExpectedException] для согласований.

4b9b3361

Ответ 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();