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

标签 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 }

最佳答案

enum

Should() 解析为 ObjectAssertions,它将 enum 装入一个 对象。 对于 ObjectAssertionsBeSameAsexpected 参数也是 object 类型。

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

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

a.Should().Be(b);

关于c# - 为什么 fluent assertion 失败但 Assert 通过枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54098160/

相关文章:

java - token "assert"出现语法错误,VariableDeclaratorId 无效

java - 为什么以编程方式激活断言时 "assert false"不会导致 AssertionError?

c# - 刷新一个控件

c# - 找不到查询模式的实现

c++ - 将OpenCV图像格式改为matlab格式,调试断言__acrt_first_block == header

c# - FluentAssertions 因带有枚举但不是类的结构而失败

c# - 如何使用 FluentAssertions 断言集合按 2 个属性排序?

c# - 使用断言扩展 Simple.Data

c# - 为什么我的动态 IEqualityComparer 不起作用?

c# - 在 C# 中从 CurrentCulture 中查找流向