簡體   English   中英

FakeItEasy&“params”論點

[英]FakeItEasy & “params” arguments

我有一個帶有以下簽名的方法。

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

我希望能夠指定第二個參數的值,以便在有人更改時單元測試會中斷。

更新:我不確定何時,但問題早已解決。 FakeItEasy 2.0.0支持開箱即用的所需行為。

在解析調用規范時,可能有特殊情況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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM