Неправильная идентификация предупреждения Visual Studio CA1806 (не игнорировать результаты метода) при использовании FluentAssertion - PullRequest
0 голосов
/ 13 июля 2020

Я пишу модульный тест C# в Visual Studio 2019. Я использую Xunit с FluentAssertion.

Две основные строки кода (для иллюстративных целей) в одном из тестов:

Action a = () => new SomeClass(null);
a.Should().Throw<ArgumentNullException>();

Однако это вызывает предупреждение компилятора CA1806: «Ctor_WhenInvalidArgs_ThenThrowException создает новый экземпляр SomeClass, который никогда не используется. Передайте этот экземпляр в качестве аргумента другому методу, назначьте экземпляр переменной или удалите создание объекта, если в нем нет необходимости. "

Как я могу разрешить предупреждение, продолжая использовать FluentAssertion, чтобы конструктор сгенерировал правильное исключение?

1 Ответ

3 голосов
/ 14 июля 2020

При создании нового экземпляра класса SomeClass вы наконец создаете функцию, конструктор «возвращает» новый экземпляр. Но вы назначаете его действию, поэтому "результат" игнорируется.

Используйте вместо него Func<T>, и CS1806 исчезнет.

Func<SomeClass> f = () => new SomeClass(null);
f.Should().Throw<ArgumentNullException>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...