设置Moq以在调用方法时增加值

时间:2013-05-20 07:12:47

标签: c# unit-testing moq

我有一个保存的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?);

1 个答案:

答案 0 :(得分:8)

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

所以以下内容应该有效:

myRepo.Setup(x => x.Save(It.IsAny<SomePoco>())) 
       .Callback<SomePoco>(poco => { poco.Id = 1; });

另请参阅quick start中的示例:

// access invocation arguments
mock.Setup(foo => foo.Execute(It.IsAny<string>()))
    .Returns(true)
    .Callback((string s) => calls.Add(s));