使用FakeItEasy中的预先存在的值来存取参数

时间:2012-01-24 23:50:04

标签: c# fakeiteasy

这有点奇怪。我试图找出一个没有参数的方法,我不关心参数是什么,所以我忽略了这些参数。它看起来像这样:

List<Foo> ignored;
A.CallTo(() => fake.Method(out ignored))
  .Returns(something);

当调用stubbed方法时,这没有任何问题:

List<Foo> target;
var result = service.Method(out target);

但是,target预先初始化时,它不起作用。例如:

List<Foo> target = new List<Foo>();
var result = service.Method(out target);

当我检查假的Tag时,我可以看到out参数被记录为<NULL>所以我怀疑当out目标已经设置为{0}时它们不匹配一些东西。我已经尝试将我的测试中的ignored设置为new List<Foo>()并尝试A<List<Foo>>.Ignored,但对结果都没有任何影响。

所以我的问题是,如果out参数target已经有值,有没有人知道如何使用out参数存根?

1 个答案:

答案 0 :(得分:5)

更新:自FakeItEasy 1.23.0起,匹配时会忽略out参数的初始值,因此无需WithAnyArguments

,五分钟后,我找到了一个可接受的解决方案(在这种情况下)。因为我对传递给这个方法的参数不感兴趣,所以如果我使用WithAnyArguments()方法那么它似乎可以工作;这必须使参数检查的所有方法都快捷,我想。

最终代码是:

List<Foo> ignored;
A.CallTo(() => fake.Method(out ignored))
  .WithAnyArguments()
  .Returns(something);

如果我想要忽略所有参数,这显然无法解决问题。如果没有人有更复杂的解决方案,我只接受这个答案。