为什么 fluent assertion 失败但 Assert 通过枚举?

Why did fluent assertion fail but Assert passed for an enum?

我无法找到断言 1 失败但断言 2 通过的原因:

var a = Test.test1;
var b = Test.test1;
a.Should().BeSameAs(b); //1
Assert.Equal(a, b);     //2

Test 是一个如下所示的枚举:

enum Test { test1, test2 }

Should() 对于 enum 解析为 ObjectAssertions,将 enum 框入 object。 对于 ObjectAssertions BeSameAsexpected 参数也是 object.

类型

所以 a.Should().BeSameAs(b)ab 放入两个不同的 object 中,然后检查这两个对象是否引用 exact 内存中的相同对象。

如果你想断言ab是相同的enum,你应该使用

a.Should().Be(b);