Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

3 года назад
Открыть в
День 1531. #TipsAndTricks 9 Советов по Fluent Assertions, Которые Сэкономят Вам Время. Окончание Начало Продолжение 8. Проверка исключений Теперь проверим, что метод выдаёт исключение:
Action act = () => sut.BadMethod();
act.Should().Throw<ArgumentException>();

И наоборот:
Action act = () => sut.GoodMethod();
act.Should()
   .NotThrow<NullReferenceException>();

Также поддерживаются асинхронные версии:
Func<Task> act = () => sut.MethodAsync();

await act.Should()
 .ThrowAsync<ArgumentNullException>();

await act.Should().NotThrowAsync();

9. Создание утверждений Вы можете написать свои утверждения, которые проверяют ваши классы и терпят неудачу, если условие не выполняется. Следующее утверждение ищет символ @ в поле адреса электронной почты. Переменная email представляет собой строку, поэтому создадим метод расширения для StringAssertions:
public static class EmailStringExtensions
{
  public static AndConstraint<StringAssertions> 
   ContainAtSign(
    this StringAssertions email,
    string because = "",
    params object[] becauseArgs)
  {
    Execute.Assertion
     .BecauseOf(because, becauseArgs)
     .ForCondition(email.Subject.Contains('@'))
     .FailWith(
       "Expected email to contain @{reason}.");

    return new AndConstraint<StringAssertions>(email);
  }
}

Использование:
string email = "[email protected]";
email.Should()
 .ContainAtSign("because that’s valid email");

Также можно создавать утверждения для ваших классов, наследуя от ReferenceTypeAssertions. Итого Недостаточно знать, как писать юнит-тесты, необходимо писать читаемые тесты. Один из лучших способов — использовать Fluent Assertions. Эта библиотека позволяет писать чётко определённые утверждения, которые позволяют любому, кто читает ваши тесты, понять, что именно они тестируют. Я представил лишь небольшую часть функциональных возможностей Fluent Assertions, их гораздо больше (см. документацию). Источник: https://methodpoet.com/fluent-assertions/