问题描述
我正在尝试在测试框架之外的 C# 上使用 Fluent 断言。有什么办法可以将 FA 检查投给布尔值吗?例如,我需要实现以下目标:
bool result= a.Should().Be(0);
如果通过则 result = true; 如果失败,结果 = false。
有没有办法从断言中转换或提取 bool
结果?
解决方法
Fluent Assertions 旨在抛出测试框架捕获的异常,而不是返回值。
你能做的最好的事情就是创建一个方法来接受一个动作,并在动作抛出时捕获异常。在 catch
中,您将返回 false
。
public bool Evaluate(Action a)
{
try
{
a();
return true;
}
catch
{
return false;
}
}
你会像这样使用它:
bool result = Evaluate(() => a.Should().Be(0));
这在负面情况下会有很糟糕的表现;抛出异常并不便宜。您可能会被其他人皱眉,因为一般来说,exceptions shouldn't be used for flow control。
也就是说,这可以满足您的需求。