2014-03-12 315 views
1

我是新的單元測試和模擬框架。單元測試模擬法

我想測試它在這裏從數據庫中檢索並返回數據作爲一個列表

public virtual List<TemplateClass> GetTemplateist() 
{ 
    //this is dummy implementation 
     return _templatelist; 
} 

我想通過模擬框架

測試的方法和我的測試是這樣的。

[SetUp] 
public void TemplateListServiceTestSetUp() 
{ 
    objlsttemplateList = new List<TemplateClass>(); 
    TemplateClass objtemplateclass = new TemplateClass(); 
    objlsttemplateList .Add(objtemplateclass); 
    mock = new Mock<TemplateClassService>(); 
    mock.Setup(x => x.GetTemplatelist()).Returns(objlsttemplateList); 
} 

[Test] 
public void TemplateListServiceTest() 
{ 
    TemplateClassService obj = mock.Object; 
    var lst= obj.GetTemplatelist(); 
} 

this obj.GetTemplatelist();爲空。

我對此感到困惑result.Result是對的還是錯的? 。 這是我真正測試GetTemplateList()的方式。

請建議我如何測試這種方法。 在此先感謝。

+0

如果您使用的是數據庫交互,則需要顯示的不僅僅是「虛擬」實現。這是數據庫交互,你會嘲笑,而不是測試的目標。 –

+0

嗨,你可以發佈一些例子。在我們的GetTemplateList()我有數據庫調用,然後從測試設置基本上我們嘲笑的方法。我不能明白在哪裏基本上我會模擬數據庫調用。 – Gautam

回答

1

模擬框架的目的是爲您的測試代碼提供依賴關係的實現,以便您可以隔離正在測試的代碼。

在你的例子中,GetTemplateList()方法沒有依賴關係,大概TemplateClassService類也沒有,所以嘲笑是沒有必要的。您可以簡單地調用方法來測試它,然後斷言您已收到預期的結果。

當您將虛擬實現替換爲從數據庫中檢索數據的實際代碼時,您將需要模擬框架。那時你可能會注入一個Repository接口或類似的東西來處理數據庫調用。這將需要被嘲笑,以便您實際上不必有數據庫連接來測試您的代碼。

+0

感謝您的快速響應。方法GetTemplateList有一個數據庫調用和從數據庫中獲取數據。所以我用嘲笑。 – Gautam