我有一个测试验证方法的集合输出.测试的这种变化通过:
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.Should()
.BeEquivalentTo(expectedUnprocessedStatuses);
}
Run Code Online (Sandbox Code Playgroud)
测试的这种变化失败,错误"预期项目[0]为InProcess,但发现待定":
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned2()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.ShouldBeEquivalentTo(expectedUnprocessedStatuses);
}
Run Code Online (Sandbox Code Playgroud)
显然,ShouldBeEquivalentTo关心收集项目的顺序,而BeEquivalentTo不是.为什么两种方法之间的等效概念不同?
我正在使用specflow编写一些单元测试,需要一种方法来检查对象列表是否按特定属性排序.目前我这样做,但我不确定这是否是最佳方式.
var listFromApi = listOfObjects;
var sortedList = listFromApi.OrderBy(x => x.Property);
Assert.IsTrue(listFromApi.SequenceEqual(sortedList));
Run Code Online (Sandbox Code Playgroud)
有没有一种很好的方法可以使用Fluent Assertions完成?