우리 회사에서는 TransactionScope와 함께 로컬 개발 데이터베이스를 사용하여 변경 사항을 롤백합니다. 고유 한 부작용은 삽입물을 테스트 할 때 신원을 높이는 것이지만, 이것은 문제가되지 않습니다.
장점은 데이터베이스에 대한 실제 테스트가 있다는 것입니다.
전자 메일을 보내거나 다른 서버로 데이터를 보내야하는 경우 ninject/moq를 사용하여 종속성 주입과 함께 IoC로 돌아가십시오.
테스트 프로젝트에 Entity Framework 및 연결 문자열을 추가해야합니다.
[TestClass]
public class NameValueTest
{
[TestMethod]
public void Create()
{
NameValueController controller = new NameValueController();
using (var ts = new TransactionScope())
{
Assert.IsNotNull(controller.Create(new Models.NameValue()
{
name1 = "1",
name2 = "2",
name3 = "3",
name4 = "4"
}));
//no complete, automatically abort
//ts.Complete();
}
}
}
이 정보가 도움이되기를 바랍니다.
이것은 아마도 내가 찾은 최고의 사례이지만, 실제로 데이터베이스에 접촉하는 코드를 통합하는 방법을 건너 뛰고 대신 모든 것을 조롱하는 방법에 대해 이야기합니다. http://blogs.msdn.com/ b/adonet/archive/2009/12/17/walkthrough-test-driven-with-entity-framework-4-0.aspx EF4 프로젝트의 실제 예제를 찾고 싶습니다. db, 조바꿈/테스트 등을 위해 수정하는 방법 – znelson
이 예에서는 저장소 구현을 모의 할 수 있도록 EF를 통해 저장소 패턴을 사용합니다. 그러나 ORM이있는 저장소를 사용하지 않는 것에 대한 좋은 주장이 있습니다. http://stackoverflow.com/questions/5625746/generic-repository-with-ef-4-1-what-is-the-point/5626884#5626884를 참조하십시오. 또한 통합 테스트 사용에 대한 설명은 http://stackoverflow.com/questions/5609508/asp-net-mvc3-andentity-framework-code-first-architecture/5610685#5610685를 참조하십시오. – devdigital
인수 중 하나는 리포지토리를 사용하고 구현을 조롱하면 Entity Framework를 테스트하지 않고 LINQ 쿼리가 프로덕션 환경에서 실패 할 수 있으므로 메모리 데이터베이스를 사용한 통합 테스트가 실제로 EF를 테스트한다는 것입니다. – devdigital