3

次のシグネチャを持つメソッドがあります。

Foo GetFooById( int id, params string[] children )

このメソッドは、IDal という名前のインターフェイスで定義されています。

私の単体テストでは、次のように記述します。

IDal dal = A.Fake<IDal>();

Foo fooToReturn = new Foo();
fooToReturn.Id = 7;

A.CallTo(()=>dal.GetFooById(7, "SomeChild")).Returns(fooToReturn);

テストを実行すると、2 番目の引数で署名が一致しません。私はそれを次のように変更しようとしました:

A.CallTo(()=>dal.GetFooById(7, new string[]{"SomeChild"})).Returns(fooToReturn);

しかし、それも失敗でした。これを機能させる唯一の方法は、次を使用することです。

A.CallTo(()=>dal.GetFooById(7, A<string[]>.Ignored )).Returns(fooToReturn);

誰かがそれを変更すると単体テストが壊れるように、2 番目の引数の値を指定できるようにしたいと思います。

4

1 に答える 1

6

更新: 時期はわかりませんが、問題は解決されて久しいです。FakeItEasy 2.0.0 は、すぐに必要な動作をサポートします。

call-specification の解析で param-arrays を特殊なケースにすることが可能かもしれません。問題を送信してください: https://github.com/patrik-hagne/FakeItEasy/issues?sort=created&direction=desc&state=open

それまでの間、最善の回避策は次のとおりです。

A.CallTo(() => dal.GetFooById(7, A<string[]>.That.IsSameSequenceAs("SomeChild"))).Returns(fooToReturn);
于 2011-10-21T09:02:31.067 に答える