gpt4 book ai didi

unit-testing - FluentAssertions ShouldBeEquivalentTo() 与 Should().BeEquivalentTo()

转载 作者:行者123 更新时间:2023-12-02 13:28:19 26 4
gpt4 key购买 nike

我有一个测试来验证方法的集合输出。此测试变体通过了:

    [TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};

Sut.GetUnprocessedStatuses()
.Should()
.BeEquivalentTo(expectedUnprocessedStatuses);
}

此测试变体失败,并出现错误“预期 item[0] 为 InProcess,但发现 Pending”:

    [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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com