C# 使用FakeiTasy中预先存在的值剔除参数

C# 使用FakeiTasy中预先存在的值剔除参数,c#,fakeiteasy,C#,Fakeiteasy,这有点奇怪。我试图存根一个没有参数的方法,我不关心参数是什么,所以我忽略了参数。看起来是这样的: List<Foo> ignored; A.CallTo(() => fake.Method(out ignored)) .Returns(something); 当我检查fake上的标记时,我可以看到out参数被记录为,因此我怀疑当out目标已设置为某个值时,它们不匹配。我已尝试将测试中的忽略设置为new List(),也尝试了A.ignored,但两者都对结果没有任何影响

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

List<Foo> ignored;
A.CallTo(() => fake.Method(out ignored))
  .Returns(something);
当我检查fake上的
标记时,我可以看到out参数被记录为
,因此我怀疑当out目标已设置为某个值时,它们不匹配。我已尝试将测试中的
忽略
设置为
new List()
,也尝试了
A.ignored
,但两者都对结果没有任何影响

因此,我的问题是,如果out参数目标已经有值,有人知道如何使用out参数来存根方法吗?

更新:因为在匹配时忽略了
out
参数的初始值,所以不需要使用
和anyarguments

,五分钟后,我找到了一个可接受的解决方案(在此场景中)。因为我对传递给这个方法的参数不感兴趣,所以如果我使用
with anyarguments()
方法,那么它似乎可以工作;我想,这一定是把论点检查在一起的捷径

最后的代码是:

List<Foo> ignored;
A.CallTo(() => fake.Method(out ignored))
  .WithAnyArguments()
  .Returns(something);
列表被忽略;
A.CallTo(()=>false.Method(out被忽略))
.WithAnyArguments()
.返回(某物);

如果我不想忽略所有的论点,这显然不能解决问题。只有当没有人有更复杂的解决方案时,我才会接受这个答案。

不,这就是解决方案。多年来,我一直在思考一个很好的语法,但从来没有想出任何“相当不错”的东西,如果你有任何想法,请让我知道。
List<Foo> target = new List<Foo>();
var result = service.Method(out target);
List<Foo> ignored;
A.CallTo(() => fake.Method(out ignored))
  .WithAnyArguments()
  .Returns(something);