如何解决Moq 设置以执行字符串的通用类型调用返回 代码
在为 string
显式键入 Setup
时,如何模拟此接口,以免获得空引用异常?
界面
public interface IUtil
{
T GetSetting<T>(string key);
}
代码
var mock = new Mock<IUtil>();
mock.Setup(mk => mk.GetSetting<string>("Jabberwocky")).Returns("Valid");
var uMock = mock as IUtil;
string mySetting = uMock.GetSetting<string>("Jabberwocky"); // GetSetting Returns Null Reference
解决方法
您可以在设置阶段使用 It.AnyType
:
const string expectedInput = "Jabberwocky";
const string expectedOutput = "Valid";
var mock = new Mock<IUtil>();
mock
.Setup(mk => mk.GetSetting<It.IsAnyType>()>(expectedInput))
.Returns(expectedOutput);
,
发生异常是因为我试图将模拟实例转换为接口;这不起作用。我应该一直在投射 .Object
属性,例如
IUtil uMock = mock.Object;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。