2009-12-25 68 views
1

這個單元測試我見到目前爲止,以下這我試圖單元測試:幫助使用起訂量

private Mock<IDBFactory> _mockDbFactory; 
private IArticleManager _articleManager; 

[Setup] 
public Setup() 
{ 
     _mockDbFactory = new Mock<IDBFactory>(); 

     _articleManager = new ArticleManager(_mockDbFactory); 
} 



[Test] 
public void load_article_by_title() 
{ 
    string title = "sometitle"; 

    // _dbFactory.GetArticleDao().GetByTitle(title); <!-- need to mock this 

    _mockDBFactory.Setup(x => x.GetArticleDao().GetByTitle(It.IsAny<string>())); 

    _articleManager.LoadArticle(title); 

    Assert.IsNotNull(_articleManager.Article); 

} 

我得到的錯誤:

非重寫成員的無效設置:

回答

2

您需要爲GetArticleDao返回的對象提供一個模擬。像這樣的:

var _mockDao = new Mock<IArticleDao>(); 
_mockDao.Setup(x => x.GetByTitle("test")).Returns("A test title"); 
_mockDBFactory.Setup(x => x.GetArticleDao).Returns(_mockDao); 

語法是從內存,所以它可能是關閉的。如果GetByTitle返回一個對象,你也需要爲它提供一個模擬實現。

+0

不應該首先嘲笑dbfactory,那麼mockDao上的方法呢? – mrblah 2009-12-25 21:02:43

+0

@mrblah,是的,但你已經有了原來的方法,所以我沒有顯示它。 – 2009-12-25 22:00:05