Почему беглое утверждение провалилось, но Assert перешел к перечислению? - PullRequest
0 голосов
/ 08 января 2019

У меня возникают проблемы с поиском причин, по которым утверждение 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 }

1 Ответ

0 голосов
/ 08 января 2019

Should() для enum преобразуется в ObjectAssertions, что включает enum в object. Для ObjectAssertions параметр expected BeSameAs также имеет тип object.

То есть a.Should().BeSameAs(b) упаковывает a и b в два разных object с и затем проверяет, что эти два объекта ссылаются на точный один и тот же объект в памяти.

Если вы хотите утверждать, что a и b являются одинаковыми enum, вам следует использовать

a.Should().Be(b);
...