C# 为什么fluent断言失败,但为枚举传递了断言?
我很难找到断言1失败但断言2通过的原因:C# 为什么fluent断言失败,但为枚举传递了断言?,c#,assertion,fluent-assertions,C#,Assertion,Fluent Assertions,我很难找到断言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放入对象中。 对于ObjectAssertions而言,BeSameAs的expected参数也是ob
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
放入对象中。
对于ObjectAssertions
而言,BeSameAs
的expected
参数也是object
类型
因此,a.Should().BeSameAs(b)
将a
和b
框成两个不同的对象
s,然后检查这两个对象是否引用了内存中完全相同的对象
如果要断言a
和b
是相同的enum
,则应使用
a.Should().Be(b);
对可能询问者知道从System.Object
继承的静态方法的相同行为。如果你说var q=ReferenceEquals(a,b)代码>然后q
将为false
。两个不同的框具有相同的内容。@Jeppe,与ReferenceEquals(a,b)的比较确实澄清了问题。谢谢