2013-03-29 2 views
0

엔티티 프레임 워크에서 작업하면서 응용 프로그램을 단위 테스트하고 싶습니다. 문제는 EntityContext입니다. 나는 Moq 라이브러리를 사용하고있다. Moq는 인터페이스와 추상 클래스에서 사용될 수 있습니다. 그러나 여기서의 문제는 EntityContext가 추상 클래스도 인터페이스도 아닌 DbContext에서 파생된다는 것입니다. 컨텍스트에 moq 객체를 어떻게 제공 할 수 있습니까? 나는 최선의 방법을 찾으려고 노력했지만 대부분의 게시물은 꽤 오래된 (2, 3 세) 것이었다. EF 5.0을 사용하고 있는데, Microsoft 나 다른 사람들이 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를 보냅니다. 유닛 테스트에서는 기대치를 지정한 후 Mock <IEntityContext>() .Object를 보냅니다. 또 다른 옵션은 IEntityContext를 구현하고 유닛 테스트에서 메모리 DB로 사용되는 FakeEntityContext를 구현하는 것입니다.

관련 문제