我想在返回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));
答案 0 :(得分:3)
不,你在这里测试的唯一东西是Moq本身。您可以尝试模拟底层,例如ISession,如果你正在使用Nhibernate。