我有一个测试,可以验证方法的集合输出。测试的这种变化通过了:
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.Should()
.BeEquivalentTo(expectedUnprocessedStatuses);
}
测试的这种变体失败,错误为“预期的项目[0]处于处理中,但发现未决”:
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned2()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.ShouldBeEquivalentTo(expectedUnprocessedStatuses);
}
显然,
ShouldBeEquivalentTo
在乎收集项的顺序,而BeEquivalentTo
不在乎。为什么两种方法之间的等效概念不同? 最佳答案
你是对的。 Should().BeEquivalentTo() 正在使用单个项目 Equals() 实现来验证等效性,并且自版本 1 以来一直存在。 FA 2.0 中引入的较新的 ShouldBeEquivalentTo() 正在进行深入的结构比较,并报告任何差异.对于 2.1,我将在默认情况下将行为更改为更像集合等效性
关于unit-testing - FluentAssertions ShouldBeEquivalentTo() 与 Should().BeEquivalentTo(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16149497/