답변

0

당신이 첫 번째 코드를 사용하는 경우 내가 엔티티를 저장하고, 아이 엔티티를 추가 할 수 있는지 확인하려면 및 유지하기 때문에, 이것에 대한 sqllite 같은 것을 사용하는 것이 었습니다 조롱 프레임 워크를 사용하여 구현을 테스트 할 수 있습니다. 데이터베이스를 칠 필요없이 메모리에 완전히 테스트를 실행 할 수 있도록해야 그 방법을 사용

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(); 
    } 

} 

:하지만,

당신이 사용할 수있는 IDbSet 인스턴스로, 다음은 유용했다 왜냐하면 내가 아는 한 IDbContext는 거기에서만 사용되기 때문입니다.

+0

DbSets을 조롱 할 수는 있지만 Linq2Sql 만 테스트하고 Linq2Sql은 테스트하지 않습니다. 그러면 SQL을 실행하지 않으므로 데이터베이스 액세스가 테스트되지 않습니다. – pfluggs11

관련 문제