1
我想這是更多的集成測試,但沒有人有一個良好的教程鏈接如何測試,以確保您的實體框架(4)模型中的關聯按預期工作?實體框架集成測試,以確保關聯是正確
我的想法是使用類似sqllite對於這一點,因爲我想確保我能救一個實體,並添加子實體和堅持也等
我想這是更多的集成測試,但沒有人有一個良好的教程鏈接如何測試,以確保您的實體框架(4)模型中的關聯按預期工作?實體框架集成測試,以確保關聯是正確
我的想法是使用類似sqllite對於這一點,因爲我想確保我能救一個實體,並添加子實體和堅持也等
如果您是第一次使用的代碼,你可以使用一個模擬框架來測試你的實現。
至於,您可以使用那裏的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僅用於那裏。
你可以模擬DbSets,但是你只測試Linq2Objects而不是Linq2Sql。它永遠不會執行SQL,因此數據庫訪問不會被測試。 – pfluggs11 2014-01-24 16:59:25