我在接口上有一个方法:
string DoSomething(string whatever);
我想用 MOQ 来模拟它,以便它返回传入的任何内容——例如:
_mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) )
.Returns( [the parameter that was passed] ) ;
有什么想法吗?
您可以将 lambda 与输入参数一起使用,如下所示:
.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));
您始终需要引用所有参数以匹配方法的签名,即使您只打算使用其中一个参数。
通用方法可以很好地处理这种情况。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);
模板简介:该模板名称为【在c#中返回传递给方法的值】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。