模拟存储库的插入方法

时间:2013-02-20 14:23:20

标签: unit-testing mocking moq

我想对以下方法进行单元测试:

void Insert(TEntity entity);

此方法的类已经被模拟(我正在使用Moq)。

现在我想做一个基于状态的测试并告诉Moq如果调用此方法,则必须将对象插入到列表中。 我怎么能这样做?

useraccountRepository.Setup(r => r.Insert(useraccountBeforeLogin)).???

这是什么?有一种引发方法会引发事件。我可以用这个吗?

2 个答案:

答案 0 :(得分:5)

我知道这是一个旧线程,但这是我测试从虚拟存储库中插入项目所做的,希望这可能对某人有帮助。

var myRepositoryMock = new Mock<IMyRepository>();

var itemsInserted = new List<MyItem>();

myRepositoryMock 
    .Setup(i => i.InsertItem(It.IsAny<MyItem>()))
    .Callback((MyItem item) => itemsInserted.Add(item));

答案 1 :(得分:1)

您可以使用callbacks - 其中列出了一些示例