2013-02-20 65 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));