使用FluentAssertions断言失败时,如何在异常消息中显示变量名?

时间:2020-02-16 21:30:42

标签: fluent-assertions

我正在尝试使用FluentAssertions库创建一些Assertion类。这是断言代码:

public AndConstraint<MyTaskAssertions> Work(string because = "", params object[] becauseArgs)
{
    Execute.Assertion
        .BecauseOf(because, becauseArgs)
        .WithExpectation("Expected {context:mytask} to work{reason}, ")
        .Given(() => Subject)
        .ForCondition(x => x.Works)
        .FailWith("but it doesn't");

    return new AndConstraint<MyTaskAssertions>(this);
}

这是我的考验:

var t = new MyTask {Works=false};
t.Should().Work();

一切正常,除了在异常消息上显示“ mytask ”而不是变量名t之外,

预期mytask可以正常工作,但不能

我已经阅读了文档的Extensibility页,并且还检查了内置断言的源代码,但是我仍然不确定要显示异常消息的确切信息是什么?实际的变量名称,而不是“ context:”占位符之后的名称。

1 个答案:

答案 0 :(得分:2)

您需要用[CustomAssertion]标记您的方法。另请参见https://fluentassertions.com/introduction#subject-identification