如何使用回调设置最小起订量?
How to setup Moq with Callbacks?
好的,我已经开始看起订量了,所以这是一个菜鸟问题。
我已遵循 quick guide,我正在尝试设置回调到 return 特定模型:
void Main()
{
var resultData = new MyModel();
var mock = new Mock<IMyClass>();
mock.Setup(x => x.Register(It.IsAny<string>()))
.Returns(new MyModel { Name = "Test" })
.Callback<MyModel>((data) =>
{
resultData = data;
});
var parameter = "123";
var result = mock.Object.Register(parameter);
}
public interface IMyClass
{
MyModel Register(string code);
}
public class MyModel
{
public string Name { get; set; }
}
我在通话中遇到此异常:
ArgumentException: Object of type 'System.String' cannot be converted
to type 'UserQuery+MyModel'.
我做错了什么?
Callback<T>
方法中的 T
应该匹配方法的参数类型 Setup
。换句话说,Moq 让您设置一个回调方法,其参数与被模拟的方法相同。
我不太确定你想在这里做什么。如果您只是想从模拟方法中保存 return MyModel
对象,请执行以下操作:
var returnedModel = new MyModel { Name = "Test" };
mock.Setup(x => x.Register(It.IsAny<string>()))
.Returns(returnedModel);
如果您尝试使用给定的 string
参数创建 MyModel
,请执行以下操作:
mock.Setup(x => x.Register(It.IsAny<string>()))
.Returns((string data) => new MyModel { Name = data });
好的,我已经开始看起订量了,所以这是一个菜鸟问题。
我已遵循 quick guide,我正在尝试设置回调到 return 特定模型:
void Main()
{
var resultData = new MyModel();
var mock = new Mock<IMyClass>();
mock.Setup(x => x.Register(It.IsAny<string>()))
.Returns(new MyModel { Name = "Test" })
.Callback<MyModel>((data) =>
{
resultData = data;
});
var parameter = "123";
var result = mock.Object.Register(parameter);
}
public interface IMyClass
{
MyModel Register(string code);
}
public class MyModel
{
public string Name { get; set; }
}
我在通话中遇到此异常:
ArgumentException: Object of type 'System.String' cannot be converted to type 'UserQuery+MyModel'.
我做错了什么?
Callback<T>
方法中的 T
应该匹配方法的参数类型 Setup
。换句话说,Moq 让您设置一个回调方法,其参数与被模拟的方法相同。
我不太确定你想在这里做什么。如果您只是想从模拟方法中保存 return MyModel
对象,请执行以下操作:
var returnedModel = new MyModel { Name = "Test" };
mock.Setup(x => x.Register(It.IsAny<string>()))
.Returns(returnedModel);
如果您尝试使用给定的 string
参数创建 MyModel
,请执行以下操作:
mock.Setup(x => x.Register(It.IsAny<string>()))
.Returns((string data) => new MyModel { Name = data });