7

我有两个双精度数组。有没有办法使用 FluentAssertions 使用 .BeApproximately() 技术逐个元素地比较数组?

对于整个数组,一个范围值就足够了。

例子:

double[] source = { 10.01, 8.01, 6.01 };
double[] target = { 10.0, 8.0, 6.0  };

// THE FOLLOWING IS NOT IMPLEMENTED
target.Should().BeApproximately(source, 0.01);   

有替代方法吗?

4

2 回答 2

11

泛型集合断言有一个重载,它接受一个 Func,您可以使用它在比较期间应用任何谓词。有了它,您可以执行以下操作:

source.Should().Equal(target, (left, right) => AreEqualApproximately(left, right, 0.01));

您唯一需要做的就是自己创建该方法。

于 2013-06-12T07:08:34.663 回答
1

我知道比较列表更可取,但您可以对其进行迭代并单独比较它们。我现在无法测试代码,但以下应该可以工作......

double[] source = { 10.01, 8.01, 6.01 };
double[] target = { 10.0, 8.0, 6.0  };

for(var i=0; i<source.Length; i++)
    target[i].Should().BeApproximately(source[i], 0.01)
于 2013-06-11T22:43:52.253 回答