2012-04-23 226 views
0

我有這樣的方法:測試對象

public void ABC(ViewModeL model) 
    { 
     var dataTable = new DataTable(); 
     dataTable.Columns.Add("column1", typeof(int)); 
     dataTable.Columns.Add("column2", typeof(int));      
     var dr = dataTable.NewRow(); 
     dr["column1"] = 2; 
     dr["column2"] = 0; 
    } 

我想斷言DataTable對象上,但我無法弄清楚如何做到這一點,因爲它是內部創建方法,也不會由此方法返回。是否有可能使用rhino mocks進行測試?

+0

爲什麼要斷言DataTable與外部事物沒有關係? – 2012-04-23 11:13:48

+0

因爲我正在添加東西,我想知道他們是否以正確的方式添加。 – 2012-04-23 11:22:14

+1

這不是單元測試的重點。單元測試測試**函數/對象是做什麼的,而不是**他們如何做。 – MattDavey 2012-04-23 11:27:55

回答

0

不,這是一個局部變量,其生命空間爲ABC()方法範圍。所以從C#的角度來看這是不可能的,甚至在單元測試方面也是錯誤的,所以你不能放棄實現的細節。

也許你提供了不完整的方法體,因爲dataTable變量會在ABC()方法執行後死掉,所以你爲什麼需要檢查它?

+0

我打電話給另一種方法,我從我的方法中傳遞dataTable對象。 repository.InsertDataTable(dataTable中); – 2012-04-23 11:28:53

+0

請顯示此代碼 – sll 2012-04-23 12:09:51

+0

嘿我重構了我的代碼並創建了一個受保護的方法,它將返回DataTable對象,並通過生成部分模擬來獨立測試它。不管怎麼說,還是要謝謝你.. :-) – 2012-04-23 12:30:57