如何解决返回Task <dynamic>的模拟方法
我对返回动态的方法进行了单元测试,当我尝试设置并返回一个动态值时,在运行测试语句时出现错误
“ Moq.etc”的最佳重载方法匹配具有无效参数
_managerMock.Setup(x => x.someMethod(It.IsAny<int>()))
.Returns(Task.Fromresult(resource));
解决方法
您有两个选择:
使用var
如果您的resource
变量未声明为dynamic
,那么您不需要任何特殊的东西。您需要的只是旧的ReturnsAsync
。 (与ReturnsAsync
相比,Returns
胜过Task.FromResult
)
var resource = new {Id = 1};
_managerMock.Setup(mgr => mgr.SomeMethod(It.IsAny<int>()))
.ReturnsAsync(resource);
在此示例中,我创建了一个匿名类型,但是您可以使用任何想要的类型。
具有动态
如果您将resource
声明为动态,则需要使用ReturnsAsync
的另一个重载。无需指定返回value
,而需要指定valueFunction
。
dynamic resource = new {Id = 1};
_managerMock.Setup(mgr => mgr.SomeMethod(It.IsAny<int>()))
.ReturnsAsync(() => resource);
在此示例中,我创建了一个匿名lambda,但是您可以使用任何想要的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。