2013-02-20 54 views
0

我有一個三層Web應用程序:Web>服務>核心。我剛剛添加了一個Services.Tests單元測試項目,我正在試圖弄清楚如何開始。如何測試MVC4中的服務層?

我已經添加了從Services.Tests項目服務項目的引用。然後,我在我的測試類創建的Services.service類的一個實例:

[TestClass] 
public class CrudTests 
{ 
    private readonly SetServices _setService = new SetServices(); 

    [TestMethod] 
    public void TestMethod() 
    { 

但我得到一個錯誤約_setService需要我的核心項目的引用。

第一個問題:爲什麼我需要引用我的核心項目如果Services項目已經引用它?

我已經添加了引用並運行了通過的空測試。然後我試着打電話給我的服務類中的一種基本方法:

[TestMethod] 
public void TestMethod() 
{ 
    _setService.CreateSet("Test Set", "Test Set Details", null); 

但我得到一個providerIncompatileException

第二個問題:建立/使用專用測試數據庫的建議方法是什麼?

第三個問題:如何告訴我的測試項目使用哪個數據庫?

+0

未來,嘗試將不相關的問題分成不同的帖子(至少有3個)。 – rae1 2013-02-20 18:45:20

回答

1

通過部分,

爲什麼我需要引用我的核心項目,如果該項目服務已經引用了嗎?

根據this answer,項目引用不可繼承。 ServicesCore有依賴性這一事實並不意味着誰消費Services需要知道任何關於Core的事情,或者就此而言使用Core中專門定義的任何邏輯。

創建/使用專用測試數據庫的建議方法是什麼?

它完全取決於什麼數據庫,什麼ORM,什麼框架等。有沒有固定的方式來做到這一點。

我如何告訴我的測試項目中使用的數據庫?

以同樣的方式告訴應用程序執行此操作:通過配置。只需創建一個DatabaseStub並對其中的測試數據庫信息進行硬編碼。

+0

再次感謝您的幫助:) – RobVious 2013-02-20 22:56:10