如何使用 Fluent Assertions 来测试不等式测试中的异常?
How to use Fluent Assertions to test for exception in inequality tests?
我正在尝试使用 C# 中的 Fluent Assertions 为大于覆盖的运算符编写单元测试。如果其中一个对象为空,则此 class 中的大于运算符应该抛出异常。
通常在使用 Fluent Assertions 时,我会使用 lambda 表达式将方法放入操作中。然后我会 运行 操作并使用 action.ShouldThrow<Exception>
。但是,我不知道如何将运算符放入 lambda 表达式中。
出于一致性考虑,我宁愿不使用 NUnit 的 Assert.Throws()
、Throws
约束或 [ExpectedException]
属性。
你可以试试这个方法。
[Test]
public void GreaterThan_NullAsRhs_ThrowsException()
{
var lhs = new ClassWithOverriddenOperator();
var rhs = (ClassWithOverriddenOperator) null;
Action comparison = () => { var res = lhs > rhs; };
comparison.Should().Throw<Exception>();
}
看起来不够整洁。但它有效。
或者分两行
Func<bool> compare = () => lhs > rhs;
Action act = () => compare();
我正在尝试使用 C# 中的 Fluent Assertions 为大于覆盖的运算符编写单元测试。如果其中一个对象为空,则此 class 中的大于运算符应该抛出异常。
通常在使用 Fluent Assertions 时,我会使用 lambda 表达式将方法放入操作中。然后我会 运行 操作并使用 action.ShouldThrow<Exception>
。但是,我不知道如何将运算符放入 lambda 表达式中。
出于一致性考虑,我宁愿不使用 NUnit 的 Assert.Throws()
、Throws
约束或 [ExpectedException]
属性。
你可以试试这个方法。
[Test]
public void GreaterThan_NullAsRhs_ThrowsException()
{
var lhs = new ClassWithOverriddenOperator();
var rhs = (ClassWithOverriddenOperator) null;
Action comparison = () => { var res = lhs > rhs; };
comparison.Should().Throw<Exception>();
}
看起来不够整洁。但它有效。
或者分两行
Func<bool> compare = () => lhs > rhs;
Action act = () => compare();