起订量:返回传递给方法的值
我有一个接口上的方法:
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);