C# Moq设置用于执行字符串的泛型调用返回

C# Moq设置用于执行字符串的泛型调用返回,c#,moq,C#,Moq,在为设置显式键入字符串时,如何模拟此接口以不获取空引用异常 接口 公共接口IUtil { T GetSetting(字符串键); } 代码 var mock=new mock(); mock.Setup(mk=>mk.GetSetting(“Jabberwocky”))。返回(“有效”); var uMock=模拟为IUtil; 字符串mySetting=uMock.GetSetting(“Jabberwocky”);//GetSetting返回空引用 发生异常是因为我试图将模拟实例强制转换到

在为
设置
显式键入
字符串
时,如何模拟此接口以不获取空引用异常

接口
公共接口IUtil
{
T GetSetting(字符串键);
}
代码
var mock=new mock();
mock.Setup(mk=>mk.GetSetting(“Jabberwocky”))。返回(“有效”);
var uMock=模拟为IUtil;
字符串mySetting=uMock.GetSetting(“Jabberwocky”);//GetSetting返回空引用

发生异常是因为我试图将模拟实例强制转换到接口;这是行不通的。我本应该强制转换
.Object
属性,例如

IUtil uMock = mock.Object;

您可以在设置阶段使用
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);
const string expectedInput=“Jabberwocky”;
常量字符串expectedOutput=“Valid”;
var mock=new mock();
嘲弄
.Setup(mk=>mk.GetSetting()>(expectedInput))
.返回(预期输出);

as根本不需要……从
as
到定义,这不是一个好答案。我还是说铸造;)(代码中没有强制转换)
IUtil uMock = mock.Object;
const string expectedInput = "Jabberwocky";
const string expectedOutput = "Valid";

var mock = new Mock<IUtil>();
mock
   .Setup(mk => mk.GetSetting<It.IsAnyType>()>(expectedInput))
   .Returns(expectedOutput);