繁体   English   中英

流利的断言:Be() vs 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 类型的ObjectAssertions与对象的默认值( null )进行比较。

这不是一个断言。
该方法返回一个错误的 boolean。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM