在我的场景中,我想模拟 1 个服务框架方法,它接受对象参数并使用强类型类对象重置它。
public void Updatedata(object pvm)
{
var vm = new datamodel()
{
name = "test",
age = 100
};
pvm = vm;
}
它给出了编译错误“无效的回调。设置带有参数的方法(对象)无法调用带有参数的回调(数据模型)。” 使用以下代码进行模拟。
mockderived.Setup(p => p.Updatedata(It.IsAny<datamodel>()))
.Callback<datamodel>(p =>
{
p.name ="My name is test";
});
如果我将 updatedata 方法更改为接受数据模型作为参数而不是对象类型,则模拟效果很好。为了避免编译错误,我通过将对象作为参数传递来更改代码:
mockderived.Setup(p => p.Updatedata(It.IsAny<object>()))
.Callback<object>(p =>
{
p = new datamodel() {name = "My name is test"};
});
由它执行的代码并没有像预期的那样改变数据模型的值。