起订量:返回传递给方法的值

我有一个接口上的方法:

string DoSomething(string whatever); 

我想用MOQ来嘲弄这个,所以它返回所有传入的东西 – 例如:

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

有任何想法吗?

你可以使用带有input参数的lambdaexpression式,如下所示:

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

或者稍微可读:

 .Returns<string>(x => x); 

更有用的是,如果你有多个参数你可以访问任何/所有的参数:

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

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

通用的Return<T>方法可以很好地处理这个问题

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