Moq 设置以执行字符串的通用类型调用 Return
Moq Setup To Exercise Generic Type Call Return of String
如何模拟此接口,以便在为 Setup
显式键入 string
时不出现空引用异常?
界面
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
出现异常是因为我试图将模拟实例转换为接口;这是行不通的。我应该投射 .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);
如何模拟此接口,以便在为 Setup
显式键入 string
时不出现空引用异常?
界面
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
出现异常是因为我试图将模拟实例转换为接口;这是行不通的。我应该投射 .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);