Unit testing FluentAssertions shouldEquivalentTo()与Should()。BeeEquivalentTo()
我有一个测试来验证方法的集合输出。试验通过的这种变化:Unit testing FluentAssertions shouldEquivalentTo()与Should()。BeeEquivalentTo(),unit-testing,fluent-assertions,Unit Testing,Fluent Assertions,我有一个测试来验证方法的集合输出。试验通过的这种变化: [TestMethod, TestCategory("BVT")] public void TheStatusesAreReturned() { var expectedUnprocessedStatuses = new List<FileUploadStatus> { FileUploadStatus.InProcess,
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.Should()
.BeEquivalentTo(expectedUnprocessedStatuses);
}
[TestMethod,TestCategory(“BVT”)]
公共无效状态已返回()
{
var expectedUnprocessedStates=新列表
{
FileUploadStatus.InProcess,
文件上载状态。挂起,
};
Sut.GetUnprocessedStatuses()
.Should()
.Beequivalento(预期工艺状态);
}
此测试变体失败,错误为“预期项[0]正在处理中,但发现挂起”:
[TestMethod,TestCategory(“BVT”)]
公共无效状态报告2()
{
var expectedUnprocessedStates=新列表
{
FileUploadStatus.InProcess,
文件上载状态。挂起,
};
Sut.GetUnprocessedStatuses()
.应等同于(预期的过程状态);
}
显然,
应该同等对待
关心收款项目的顺序,而应该同等对待
不关心。为什么这两种方法的等价性概念不同?你是对的。Should().BeEquivalentTo()使用单个items Equals()实现来验证等效性,并且从版本1开始就存在。FA 2.0中引入的较新的shouldbeeequivalentto()正在进行深入的结构比较,并报告任何差异。对于2.1,我将更改行为,使其更像默认情况下的集合等价性好的,我期待更新。我经常使用Should().beequivalento()!这是一篇旧文章,但是应该是等效的,因为从v2.1开始,
将忽略集合中项目的顺序。
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned2()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.ShouldBeEquivalentTo(expectedUnprocessedStatuses);
}