RPM*_*984 4 c# unit-testing moq
我有一个保存的POCO,像这样:
_myRepo.Save(somePoco);
Run Code Online (Sandbox Code Playgroud)
_myRepo 被嘲笑,例如:
var myRepo = new Mock<IRepo>();
Run Code Online (Sandbox Code Playgroud)
调用Save方法时,我想设置somePoco.Id为1.
我该怎么做?
我看到有一个Callback方法.Setup,但它没有通过POCO,例如:
myRepo.Setup(x => x.Save(It.IsAny<SomePoco>())
.Callback(x => // how do i get the poco?);
Run Code Online (Sandbox Code Playgroud)
参数传递给Callback您只需要明确指定类型的方法.
所以以下应该有效:
myRepo.Setup(x => x.Save(It.IsAny<SomePoco>()))
.Callback<SomePoco>(poco => { poco.Id = 1; });
Run Code Online (Sandbox Code Playgroud)
另请参阅快速入门中的示例:
// access invocation arguments
mock.Setup(foo => foo.Execute(It.IsAny<string>()))
.Returns(true)
.Callback((string s) => calls.Add(s));
Run Code Online (Sandbox Code Playgroud)