Свободные утверждения: Be () против Equals () - PullRequest
0 голосов
/ 02 мая 2020

В чем разница между:

  • subject.Should().Be(expected)
  • subject.Should().Equals(expected)

Я всегда использую 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? Или они утверждают разные вещи?

1 Ответ

2 голосов
/ 02 мая 2020

Метод Equals происходит от System.Object.
Вы фактически сравниваете объект типа ObjectAssertions со значением объекта по умолчанию (null).

Это не утверждение.
Метод возвращает логическое значение false.

enter image description here

...