模拟一个使用Moq返回动态返回类型的方法
本文关键字:返回 Moq 动态 返回类型 方法 一个 模拟 | 更新日期: 2023-09-27 18:27:58
给定以下接口:
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'不包含"Returns"的定义
有人能告诉我我在这里做错了什么吗?
我能够创建一个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 });
OR只返回Dictionary<string,string>
:)