4

我有一个我正在保存的 POCO,如下所示:

_myRepo.Save(somePoco);

_myRepo被嘲笑,例如:

var myRepo = new Mock<IRepo>();

当调用 Save 方法时,我想设置somePoco.Id为 1。

我该怎么做?

我看到 上有一个Callback方法.Setup,但它没有通过 POCO,例如:

myRepo.Setup(x => x.Save(It.IsAny<SomePoco>())
   .Callback(x => // how do i get the poco?);
4

1 回答 1

10

参数被传递给Callback您只需要明确指定类型的方法。

所以以下应该工作:

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));
于 2013-05-20T07:26:47.533 回答