【问题标题】:Moq C# Callback can we get List/Collection for callback parameterMoq C# 回调我们可以获取回调参数的列表/集合吗
【发布时间】:2017-12-13 17:36:49
【问题描述】:
var callArgs = new List<string>();
mock.Setup(foo => foo.DoSomething(It.IsAny<string>()))
    .Returns(true)
    .Callback((string s) => callArgs.Add(s));

同样我们可以对 List 参数进行回调

var callArgs = new List<string>();
mock.Setup(foo => foo.DoSomething(It.IsAny<List<string>>()))
    .Returns(true)
    .Callback((List<string> s) => callArgs.AddRange(s));

如果不是为什么,这是否可能?

var ex = new List(); myrMock.Setup(x => x.foo(It.IsAny>(), It.IsAny>(), It.IsAny())) .Callback((IList sy, IList v,string str) => ex.AddRange(sy));

我在前列表中没有得到任何东西。

【问题讨论】:

  • 你试过了吗?
  • 我试过了……我遇到了错误:
  • 无效回调。设置带参数的方法(IList1,IList1,String)无法调用带参数的回调(List`1)。
  • 那么Foo() 中的参数类型是IList&lt;string&gt;?如果是这样,您的回调类型必须与您的参数类型匹配

标签: c# unit-testing callback moq


【解决方案1】:

是的,您可以,正如您所描述的那样。

或者你可以使用这种格式:

var callArgs = new List<string>();
mock.Setup(foo => foo.DoSomething(It.IsAny<List<string>>()))
    .Returns(true)
    .Callback<List<string>>(s => callArgs.AddRange(s));

https://github.com/Moq/moq4/wiki/Quickstart

【讨论】:

    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2017-10-20
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多