2013-02-20 61 views
1

的插入方法,我想单元测试以下方法:惩戒存储库

void Insert(TEntity entity); 

类这种方法已经嘲笑(我使用MOQ)。

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

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

什么在这里?有一种提高事件的方法。我可以使用这个吗?

回答

1

您可以使用callbacks - 有上市有

+0

谢谢。 现在基本上有效: 列表 useraccountsAfterRegister = new List (); useraccountRepository.Setup(R => r.Insert(useraccountBeforeLogin))回呼( ()=> useraccountsAfterRegister.Add(useraccountAfterLogin)); 但这是一个真正的基于状态的测试吗?也可以是一个交互测试,因为我告诉模型,当插入方法被调用时会发生什么。 – mosquito87 2013-02-20 15:41:11

1

我知道这是一个古老的线程的几个例子,但是这是我做测试的项目是从嘲笑库插入,希望这可以帮助别人。

var myRepositoryMock = new Mock<IMyRepository>(); 

var itemsInserted = new List<MyItem>(); 

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