2010-01-26 48 views
7

我想測試下面的代碼模仿對象返回嘲笑的列表,起訂量

public void CleanUp() 
    { 
     List<ITask> tasks = _cleanupTaskFactory.GetTasks(); 

     //Make sure each task has the task.Execute() method called on them 
    } 

在我的測試我創建了一個嘲笑實現_cleanupTaskFactory的,我想存根GetTasks()方法返回一個類型:

List<Mock<ITask>> 

...但編譯器不會接受它作爲返回值。

我的目標是確保每個返回的任務都有使用Verify()MoQ方法調用的.Execute()方法。

我怎樣才能斷言每個任務得到執行?

回答

10

在你_cleanUpTaskFactory模擬,你可以簡單地做一些這樣的:

var mocks = new List<Mock<ITask>>(); 
for(var i = 0; i < 10; i++){ 
    var mock = new Mock<ITask>(); 
    mock.Setup(t => t.Execute()).Verifiable(); 
    mocks.Add(mock); 
} 

_cleanUpTaskFactoryMock.Setup(f => f.GetTasks()).Returns(mocks.Select(m => m.Object).Tolist()); 

現在一定要保持到mocks列表的引用,當你與你的測試做了你遍歷所有的嘲笑和請致電Verify()像這樣:

mocks.ForEach(m => m.Verify()); 
+1

+1你打我吧:/ – 2010-01-26 14:29:23