2016-07-26 52 views
6

所以我必須爲我的數據檢索創建一個單元測試,我想要得到的對象是相當大的。 我有「GetbyId」(在那裏我們有數據對象和映射的檢索)存儲庫。 我想通了,這將是最好創建2個單元測試:C#單元測試:從存儲庫中檢索數據

  1. 檢索數據對象的
  2. 映射到我的模型

我們已經創建了一些測試實例,我檢查具有保存的測試實體的xml的實體,所以我們非常靈活。 我的問題是與映射,因爲我的模型確實有一些接口,我不能序列化它,我不想硬編碼每個示例解決方案(因爲他們是相當多的)

有沒有人知道如何我可以更好地測試映射器嗎? Ps:我知道,我非常擅長解釋事情,很抱歉。

編輯:

下面的例子:由於IContact接口是人,我不能序列化,所以我不知道如何輕鬆地檢查它(這種模式是一個例子,實際是約200排大不計數從接口的子行)

public Person: IPerson 
{ 
    public Name {get; set;} 
    public IContact {get; set;} 
} 

public Contact: IContact 
{ 
    public Phone {get; set;} 
} 
+2

你可以添加你的模型類和存儲庫類的一些片段嗎?將更容易考慮它:) –

+0

我幾乎總是使用Json.NET和JSON格式代替XML,它更加靈活並且更易於閱讀(這對於測試來說並不差)。 –

+0

所以問題是如何比較預期的對象與實際? –

回答

0

我通常使用Compare.net下述情況:

//arrange: 
var expected = new Person{ Name = "Alice", Contact = new Contact(){Phone = ""}}; 
CompareLogic compareLogic = new CompareLogic(); 

//act: 
var result = target.GetbyId(1); 

//assert: 
Assert.IsTrue(compareLogic.Compare(expected, result).AreEqual); 

另一種選擇是使用Fluent Assertions(爲了全面披露,我對此工具沒有經驗......)

另外一個選擇是創建一個輔助方法來斷言,然後在每個測試中重用它。