流利断言:Be() 与 Equals()

Fluent Assertions: Be() vs Equals()

有什么区别:

我总是使用 Be(),但我现在有一个测试用例,其中 Be() 给出了不同的结果,然后是 Equals()。我的测试用例涉及一个结构并将其与该结构的默认值进行比较。

MyStruct subject = new MyStruct("value");

Assert.Equal(default, subject);                  // xUnit Assert => works
Assert.Equal(default(MyStruct), (object)subject); // xUnit Assert => works
subject.Should().Equals(default);                // works
subject.Should().Be(default(MyStruct));          // FAILS!

Be()Equal() 相同吗?这是 Fluent Assertions 中的错误吗?还是他们在断言不同的事情?

Equals方法来自System.Object.
您实际上将类型 ObjectAssertions 的对象与默认值对象 (null) 进行比较。

这不是断言。
方法 returns 布尔值是假的。