微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查为 bool

如何解决检查为 bool

我正在尝试在测试框架之外的 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

也就是说,这可以满足您的需求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。