【发布时间】:2020-08-16 18:13:04
【问题描述】:
有什么区别:
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 中的错误吗?还是他们在主张不同的东西?
【问题讨论】:
-
我无法重现您的结果。你的结构是如何定义的,尤其是关于它的默认值?
-
@SotirisKoukios-Panopoulos 它不是默认结构。获得一个好的默认值有一些技巧。见github.com/DynamicHands/NodaMoney/blob/feature/…
标签: c# unit-testing fluent-assertions