2011-10-19 2 views
2

以下のシグネチャを持つメソッドがあります。FakeItEasy& "params"引数

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); 

、署名は第二引数に一致していません。私はそれに変更しようとしました:

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

しかし、それはまた失敗しました。

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

私は、誰かがそれを変更した場合、ユニットテストが壊れるように、第2引数の値を指定できるようにすることを好むだろう:私はこれが仕事を得ることができる唯一の方法は、使用することです。

答えて

5

更新:いつの日かは分かりませんが、問題が解決してからずっと長いです。 FakeItEasy 2.0.0は、そのままの動作をサポートしています。

コール仕様の解析で特別なケースのパラームアレイを使用することは可能かもしれません。で問題を提出してください:

A.CallTo(() => dal.GetFooById(7, A<string[]>.That.IsSameSequenceAs("SomeChild"))).Returns(fooToReturn); 
+0

卓越した:それまではhttps://github.com/patrik-hagne/FakeItEasy/issues?sort=created&direction=desc&state=open

、最適な回避策はこれです。最初はまだ動作していませんでしたが、私はに変更しました。それは.SsSequenceAs(新しい文字列[] {"SomeChild"})のように機能しました。 –

+0

私はgithubに問題を追加しました。 –

+0

偉大な、私は問題の修正を考え出すことを試みます。 –

関連する問題