我试图在C#中使用Fluent断言写一个大于overridden操作符的单元测试.如果任何一个对象为空,则此类中的大于运算符应该抛出异常.
通常当使用Fluent Assertions时,我将使用lambda表达式将该方法放入一个动作中.然后我将运行该操作并使用action.ShouldThrow< Exception>.然而,我不知道如何把一个操作符放入一个lambda表达式.
我宁可不使用NUnit的Assert.Throws(),Throws Constraint或[ExpectedException]属性来保持一致.
解决方法
你可以尝试这种方法.
[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();