2013-06-11 52 views
3

我有两个双数组。有没有一种方法使用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); 

是否有替代的方法?

回答

7

有一个在泛型集合断言,需要一个函数功能,您可以使用比较期间应用任何谓词过载。有了这个,你可以做这样的事情:

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

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

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) 
+0

是的,这有效,但我希望我可以一次打印出所有的违规行为。 –

+0

希望我能更有帮助,但我不知道有更好的方法来做到这一点。我会提出这个问题,看看我们能否更多地关注它。 – Kevin