7

double の 2 つの配列があります。.BeAbout() 手法を使用して、FluentAssertions を使用して配列を要素ごとに比較する方法はありますか?

配列全体に対して 1 つの範囲値で十分です。

例:

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 に答える