2
我想单元测试一个存储库中的返回void的Add方法。我有兴趣测试没有碰到数据库的元素的实际添加(而不是无论是否调用Add)。这是正确的方法吗?是。回调正确的方法来模拟使用Moq的void-returning方法?
var list = new List<Foo>();
var repo = new Mock<IFooRepository>();
repo.Setup(x => x.Add(It.IsAny<Foo>()))
.Callback((Foo f) =>
{
list.Add(f);
});
repo.Object.Add(new Foo { FooId = 1 });
Assert.IsTrue(list.Any(x => x.FooId == 1));
它看起来像你想测试的东西被添加到一个内部列表..好的。如果你在这里使用mock,为什么不给你的班级一个虚假的数据库呢? – IanNorton 2012-01-11 17:42:22
通过该代码,您只需检查Add方法是以非常复杂的方式调用的 – 2012-01-11 17:44:59