.Callback是使用Moq模拟void返回方法的正确方法吗?

时间:2012-01-11 17:39:52

标签: c# unit-testing moq

我想在返回void的存储库中对Add方法进行单元测试。我有兴趣测试实际添加元素而不会访问数据库(不管是否调用了Add)。这是正确的方法吗?

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));

1 个答案:

答案 0 :(得分:3)

不,你在这里测试的唯一东西是Moq本身。您可以尝试模拟底层,例如ISession,如果你正在使用Nhibernate。