C# 将Moq设置为调用方法时的增量值
我有一个我正在保存的POCO,如下所示:C# 将Moq设置为调用方法时的增量值,c#,unit-testing,moq,C#,Unit Testing,Moq,我有一个我正在保存的POCO,如下所示: _myRepo.Save(somePoco); \u myRepo被嘲笑,例如: var myRepo = new Mock<IRepo>(); 参数被传递到回调方法,您只需要显式地指定类型 因此,以下措施应该有效: myRepo.Setup(x => x.Save(It.IsAny<SomePoco>())) .Callback<SomePoco>(poco => { poco.Id
_myRepo.Save(somePoco);
\u myRepo
被嘲笑,例如:
var myRepo = new Mock<IRepo>();
参数被传递到
回调
方法,您只需要显式地指定类型
因此,以下措施应该有效:
myRepo.Setup(x => x.Save(It.IsAny<SomePoco>()))
.Callback<SomePoco>(poco => { poco.Id = 1; });
myRepo.Setup(x=>x.Save(It.IsAny()))
.Callback(poco=>{poco.Id=1;});
另请参见中的示例:
//访问调用参数
mock.Setup(foo=>foo.Execute(It.IsAny()))
.Returns(true)
.Callback((字符串s)=>calls.Add);
您不能通过闭包访问您的somePoco
吗?如果它被声明为局部变量,它应该可以在回调函数中访问。在测试方法中调用什么?
myRepo.Setup(x => x.Save(It.IsAny<SomePoco>()))
.Callback<SomePoco>(poco => { poco.Id = 1; });
// access invocation arguments
mock.Setup(foo => foo.Execute(It.IsAny<string>()))
.Returns(true)
.Callback((string s) => calls.Add(s));