2014-02-14 54 views
-1

我似乎有問題通過示例獲取MOQ語法。除了MOQ網站之外,我想建議在哪裏看,以瞭解模擬各種接口的用法。需要使用MOQ語法的一個很好的解釋

例如,我想知道我究竟是如何進行嘲諷這樣或那樣的接口方法,並能夠,例如,已瞭解爲什麼開發商這樣寫道事情:提前

 daoMock.Setup(d => d.Get(It.Is<Expression<Func<ConfigurationEntity, bool>>>(e => ExpressionMatchesEntityWithKey(e, TestKey)))) 
       .Returns(new List<ConfigurationEntity> {configEntity}); 

的感謝!

+2

我建議檢查文檔。這裏有一個很好的例子:https://github.com/Moq/moq4/wiki/Quickstart – Jakub

+0

@Jakub太短評論。 「//匹配Func ,懶惰評估' - 看在上帝的份上,'懶惰評估'在哪一行? –

+0

@AskarIbragimov大概他們的意思是'Func '不是直接叫出來的。 –

回答

1

@Jakub建議的github頁面實際上是一個很好的開始。

無論哪種方式,我會解釋你發佈的例子。 說你有這個接口和這個設置:

public interface IDao 
{ 
    IEnumerable<ConfigurationEntity> Get(Expression<Func<ConfigurationEntity, bool>> expression) {...} 
} 

var daoMock = new Mock<IDao>(); 

daoMock.Setup(d => d.Get(It.Is<Expression<Func<ConfigurationEntity, bool>>>(e => ExpressionMatchesEntityWithKey(e, TestKey)))) 
       .Returns(new List<ConfigurationEntity> {configEntity}); 

這個設置告訴模擬返回包含列表configEntity

  • Get方法被稱爲
  • 用的參數鍵入Expression<Func<ConfigurationEntity, bool>>
  • ExpressionMatchesEntityWithKey(e, TestKey)(其中e是作爲n參數)返回true。

所以,基本上,當你調用Get方法的嘲笑對象,起訂量將檢查的說法是正確的類型,檢查是否ExpressionMatchesEntityWithKey(e, TestKey)返回true,然後用configEntity返回一個列表。

默認情況下,如果沒有滿足任何這些要求,模擬對象將返回IEnumerable<ConfigurationEntity>的默認值,即null

現在,您可以檢索嘲笑的對象,並隨心所欲地做任何事情。

IDao dao = daoMock.Object;