流利断言:Be() 与 Equals()
Fluent Assertions: Be() vs Equals()
有什么区别:
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 中的错误吗?还是他们在断言不同的事情?
Equals
方法来自System.Object
.
您实际上将类型 ObjectAssertions
的对象与默认值对象 (null
) 进行比较。
这不是断言。
方法 returns 布尔值是假的。
有什么区别:
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 中的错误吗?还是他们在断言不同的事情?
Equals
方法来自System.Object
.
您实际上将类型 ObjectAssertions
的对象与默认值对象 (null
) 进行比较。
这不是断言。
方法 returns 布尔值是假的。