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