2013-04-09 67 views
1

我想這是更多的集成測試,但沒有人有一個良好的教程鏈接如何測試,以確保您的實體框架(4)模型中的關聯按預期工作?實體框架集成測試,以確保關聯是正確

我的想法是使用類似sqllite對於這一點,因爲我想確保我能救一個實體,並添加子實體和堅持也等

回答

0

如果您是第一次使用的代碼,你可以使用一個模擬框架來測試你的實現。

至於,您可以使用那裏的IDbSet情況下,以下是有用的:

public class InMemoryDbSet<T> : IDbSet<T> where T : class 
{  
    private readonly HashSet<T> _data; 
    private readonly IQueryable _query; 

    public Type ElementType 
    { 
     get 
     { 
      return this._query.ElementType; 
     } 
    } 

    public Expression Expression 
    { 
     get 
     { 
      return this._query.Expression; 
     } 
    } 

    public IQueryProvider Provider 
    { 
     get 
     { 
      return this._query.Provider; 
     } 
    } 

    public InMemoryDbSet() 
    { 
     this._data = new HashSet<T>(); 
     this._query = _data.AsQueryable(); 
    } 


    public T Add(T entity) 
    { 
     this._data.Add(entity); 
     return entity; 
    } 


    public T Attach(T entity) 
    { 
     this._data.Add(entity); 
     return entity; 
    } 


    public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class, T 
    { 
     throw new NotImplementedException(); 
    } 

    public T Create() 
    { 
     return Activator.CreateInstance<T>(); 
    } 

    public virtual T Find(params Object[] keyValues) 
    { 
     throw new NotImplementedException("Derive from FakeDbSet and override Find"); 
    } 


    public System.Collections.ObjectModel.ObservableCollection<T> Local 
    { 
     get 
     { 
      return new System.Collections.ObjectModel.ObservableCollection<T>(_data); 
     } 
    } 


    public T Remove(T entity) 
    { 
     this._data.Remove(entity); 
     return entity; 
    } 


    public IEnumerator<T> GetEnumerator() 
    { 
     return this._data.GetEnumerator(); 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return this._data.GetEnumerator(); 
    } 

} 

使用這種方法應使您能夠在內存中,而不需要打一個數據庫完全運行測試,但是,正如我所說,只有在代碼中,因爲據我所知,IDbContext僅用於那裏。

+0

你可以模擬DbSets,但是你只測試Linq2Objects而不是Linq2Sql。它永遠不會執行SQL,因此數據庫訪問不會被測試。 – pfluggs11 2014-01-24 16:59:25