2009-04-02 7 views
19

데이터베이스에 액세스하기 위해 엔티티 프레임 워크를 사용하고 있으며 실제 데이터에 대한 의존성이없는 중간 계층 클래스를 테스트 할 수 있도록 단위 테스트 내에서 데이터베이스 컨텍스트를 모의하고 싶습니다. 나는 이것이 처음으로 (Mocking an Entity Framework Model)에 대해 물어 보는 것이 아니라는 것을 알고있다. 그러나 어떤 인터넷 검색 후에는 모델의 메타 데이터만으로 컨텍스트를 인스턴스화하는 것이 가능할 수도 있다는 본능이있다.Mocking Entity Framework 컨텍스트

누구든지이 작업을 수행 할 수 있습니까?

+0

다른 레이어를 만들 때도 EF에서 mMamDbEntities.SaveChanges()를 사용하므로 저장 작업을 어떻게 수행할까요? 엔티티 참조가 변경된 후 –

+0

질문 [Mock Entity Framework 데이터베이스] (http://stackoverflow.com/questions/6087857/mock-entity-framework-database/14406546#14406546)에 대한 내 대답을 참조하십시오. 모의 객체 컨텍스트는 T4 템플릿을 사용하여 엔티티 모델에서 생성 할 수 있습니다. 이것은 일반적인 POCO 클래스가 생성되는 방식이며, 모의 객체 컨텍스트와 인터페이스를 생성하여 여러분의 구체적인 객체 컨텍스트로 스왑 가능하게 만들 수 있습니다. – NightOwl888

답변

6

메타 데이터 만 있으면 좋은 기사가 있고 단위 테스트 EF는 일반적으로 here입니다.

7

이 작업을 수행하는 잘 알려진 방법은 Repository pattern을 사용하는 것입니다. 이는 구체적인 데이터 액세스 구현에 대한 계층의 역할을하며 테스트 복식을 주입 할 수있는 공간을 제공합니다.

+1

리포지토리 패턴 (좋은 생각입니다)을 사용하더라도 ObjectContext를 계속 활용하려는 경우가 있습니다. –

+1

EF에서 본 저장소 패턴은 내부적으로 ObjectContext를 사용합니다. –

+3

ObjectContext는 대개 저장소에 종속 항목으로 주입되어야합니다. 저장소와 작업 단위는 직교합니다. –