2013-03-29 81 views
0

我正在研究實體框架並希望對我的應用程序進行單元測試。問題是EntityContext。我正在使用Moq庫。 Moq可以用於接口和抽象類。但是這裏的問題是EntityContext是從DbContext派生的,它既不是抽象類也不是接口。我如何爲上下文提供一個moq對象。我試圖找到最佳做法,但大部分帖子都很舊(2,3歲)。我使用EF 5.0,我認爲微軟或其他人應該已經做了一些測試EntityContext。我如何可以對我的實體環境進行單元測試

public class Repository 
{ 
private EntityContext _context; 
public EntityContext Context; 

    public Repository() 
    { 
     _context = new EntityContext(); 
    } 

    internal Repository(MockContext mockContext) // Mock Context. Is it possible? 
    { 
     _context = mockContext; 
    } 
} 

注意:很抱歉重複提問,但我無法找到有關此主題的最新問題。

+0

更好的標題可能是:「如何嘲諷上下文」或「如何測試存儲庫」 –

+0

@FaisalHafeez - 你看過我的回答嗎? – Ikaso

回答

0

我會做的是讓EntityContext實現一個接口。可以說,EntityContext公開了一個Employees列表和一個Departments列表。你會這樣做:

public interface IEntityContext 
{ 
    IQueryable Departments { get; set;} 
    IQueryable Employees { get; set;} 
} 

在你的資源庫期望一個IEntityContext實現。在生產代碼中發送實際的實現,EntityContext。在單元測試中發送模擬<IEntityContext>().Object在指定了你的期望之後。 另一種選擇是實現一個FakeEntityContext,它實現了IEntityContext,並在單元測試中充當內存數據庫。

相關問題