FakeItEasy& “params”论点

时间:2011-10-19 23:18:30

标签: fakeiteasy

我有一个带有以下签名的方法。

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

我希望能够指定第二个参数的值,这样如果有人更改单元测试,单元测试就会中断。

1 个答案:

答案 0 :(得分:6)

更新:我不确定何时,但问题早已解决。 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);