代码之家  ›  专栏  ›  技术社区  ›  Steve Dunn supercat

返回传递给方法的值

  •  291
  • Steve Dunn supercat  · 技术社区  · 15 年前

    string DoSomething(string whatever);
    

    _mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) )
       .Returns( [the parameter that was passed] ) ;
    

    有什么想法吗?

    3 回复  |  直到 7 年前
        1
  •  636
  •   Jakub Konecki    12 年前

    可以将lambda与输入参数一起使用,如下所示:

    .Returns((string myval) => { return myval; });
    

    或者更具可读性:

    .Returns<string>(x => x);
    
        2
  •  303
  •   rosscj2533    8 年前

    更有用的是,如果您有多个参数,您可以通过以下方式访问任意/所有参数:

    _mock.Setup(x => x.DoSomething(It.IsAny<string>(),It.IsAny<string>(),It.IsAny<string>())
         .Returns((string a, string b, string c) => string.Concat(a,b,c));
    

    您始终需要引用所有参数,以匹配方法的签名,即使您只打算使用其中一个参数。

        3
  •  77
  •   Niclas Lindqvist    7 年前

    泛型 Returns<T> 方法可以很好地处理这种情况。

    _mock.Setup(x => x.DoSomething(It.IsAny<string>())).Returns<string>(x => x);
    

    或者,如果该方法需要多个输入,请按如下方式指定:

    _mock.Setup(x => x.DoSomething(It.IsAny<string>(), It.IsAny<int>())).Returns((string x, int y) => x);