繁体   English   中英

模拟一个使用Moq返回动态返回类型的方法

[英]Mocking a method that returns dynamic return type with Moq

给出以下界面:

public interface IApiHelper
{
   dynamic CallApi(string url);
}

我已经宣布了一个实例化的Mock<IApiHelper> _apiHelperMock

我正在尝试编写一个返回Success = true属性的测试,以模仿JSON结果。 我的设置如下:

_apiHelperMock.Setup(o => o.CallApi(It.IsAny<string>())).Returns((dynamic)new { Success = true });

但是,在尝试运行测试时出现以下错误: Moq.Language.Flow.ISetup'不包含“返回”的定义

谁能告诉我这里我做错了什么?

我能够创建一个ExpandoObject并将其转换为object

dynamic userInfo = new ExpandoObject();
dynamic user1 = new ExpandoObject();
user1.title = "aaa";
dynamic user2 = new ExpandoObject();
user2.title = "bbb";
userInfo.groups = new List<ExpandoObject> { user1 , user2 };

var endpointMock = new Mock<IRestEndpointHandler>();
endpointMock.Setup(c => c.RequestJsonDynamicGet(It.IsAny<Uri>())).Returns((object)userInfo);

您不必将匿名类型对象强制转换为dynamic

尝试这个:

_apiHelperMock
    .Setup(o => o.CallApi(It.IsAny<string>()))
    .Returns(new { Success = true });

或者只返回Dictionary<string,string> :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM