c# - 使用 FluentAssertion 时 Visual Studio 警告 CA1806 的错误识别(不要忽略方法结果)
问题描述
我正在 Visual Studio 2019 中编写 C# 单元测试。我正在使用 Xunit 和 FluentAssertion。
其中一个测试中的两行主要代码(用于说明目的)是:
Action a = () => new SomeClass(null);
a.Should().Throw<ArgumentNullException>();
但是,这会导致编译器 CA1806 警告:“Ctor_WhenInvalidArgs_ThenThrowException 创建了一个从未使用过的 SomeClass 的新实例。将实例作为参数传递给另一个方法,将实例分配给变量,或者在不必要时删除对象创建。”
如何在仍然使用 FluentAssertion 以确保构造函数抛出正确的异常的同时解决警告?
解决方案
在创建类的新实例时,SomeClass
您最终会创建一个函数,构造函数“返回”一个新实例。但是,你将它分配给一个动作,所以“结果”被忽略了。
改用Func<T>
CS1806 就没有了。
Func<SomeClass> f = () => new SomeClass(null);
f.Should().Throw<ArgumentNullException>();
推荐阅读
- python - 如何让我的 wxPython scrolledPanel 滚动到窗口底部?
- graphviz - 在 Graphviz 中,如何以不同的方向布局子图?
- firebase - 如何正确执行firebase实时数据库的更新?
- javascript - React:停止映射组件重新渲染
- python - 如何将两个不同模型的输出作为输入传递给 keras 中的另一个模型?
- android - 如何在 Adapter/RecyclerView 中使用 Exoplayer
- javascript - 函数的 [[Scope]] 属性
- android - 如何向服务器发送请求
- xml - XPATH:查找包含特定属性的节点并排除某些节点及其子节点
- r - 下拉所有列表并收集数据 rcurl