C# 返回任务的模拟方法<;动态>;
我对一个返回动态的方法进行了单元测试,当我尝试设置并返回一个动态值时,它在运行测试时会出错 “Moq.etc”的最佳重载方法匹配具有一些无效参数C# 返回任务的模拟方法<;动态>;,c#,unit-testing,mocking,task,moq,C#,Unit Testing,Mocking,Task,Moq,我对一个返回动态的方法进行了单元测试,当我尝试设置并返回一个动态值时,它在运行测试时会出错 “Moq.etc”的最佳重载方法匹配具有一些无效参数 \u managerMock.Setup(x=>x.someMethod(It.IsAny())) .Returns(Task.FromResult(resource)); 您有两个选择: 带var 如果资源变量未声明为动态,则不需要任何特殊的内容。您所需要的只是好的旧ReturnsAsync。(请选择ReturnsAsync而不是Returns,使用
\u managerMock.Setup(x=>x.someMethod(It.IsAny()))
.Returns(Task.FromResult(resource));
您有两个选择:
带var
如果资源
变量未声明为动态
,则不需要任何特殊的内容。您所需要的只是好的旧ReturnsAsync
。(请选择ReturnsAsync
而不是Returns
,使用Task.FromResult
)
var-resource=new{Id=1};
_managerMock.Setup(mgr=>mgr.SomeMethod(It.IsAny()))
.ReturnsAsync(资源);
在这个示例中,我创建了一个匿名类型,但您可以使用任何您想要的
充满活力
若您将资源
声明为动态资源,那个么您需要使用另一个重载的ReturnsAsync
。您需要指定valueFunction
而不是指定返回值
dynamic resource=new{Id=1};
_managerMock.Setup(mgr=>mgr.SomeMethod(It.IsAny()))
.ReturnsAsync(()=>资源);
在这个示例中,我创建了一个匿名lambda,但您可以使用您想要的任何东西。什么是资源?还显示模拟内容的定义以及如何在测试中使用
_managerMock.Setup(x => x.someMethod(It.IsAny<int>()))
.Returns(Task.FromResult(resource));