TDD에 대해 살펴보고 시나리오를 통해 도움을받을 수있었습니다.TDD가 내부 생성자에 Mocked Repository (UnitOfWork)를 삽입합니다.
내 프로젝트는 MVC3을 사용하며 BAL 및 DAL 레이어로 구성되어 있습니다. 각 레이어는 자체 프로젝트에 있습니다. BAL은 저장소 패턴을 통해 데이터베이스에 액세스합니다. EntityFramework를 사용하고 있기 때문에 UnitOfWork 패턴도 구현했습니다.
public class ExampleService
{
private UnitOfWork unitOfWork;
private bool isProcessing = false;
internal ExampleService(UnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
public void ExposedMethod()
{
//do stuff with the unitOfWork
}
}
질문 : 다음은 BAL에서 서비스 클래스는 모습입니다 나는 이것에 대한 단위 테스트를 만들고 싶습니다 (분명 내가 코드 전에 테스트를 작성해야). 그러나 코드를 그대로 실행하면 UnitOfWork를 사용하고 데이터베이스에 연결할 때 테스트가 통합 테스트가됩니다. 메모리에있는 더미 데이터에 액세스하는 새 UnitOfWork를 모의 수 있지만 내부로 생성자로 주입하는 방법을 이해하지 못합니다. 차라리 각 프로젝트 안에있는 단위 테스트를 작성하지 않을 것입니다.
의견이 있으십니까?
[InternalsVisibleTo] 내 질문을 그대로 해결합니다. 나는 여전히 DI로 뭔가를 놓치고 있을지 모르지만 내가 보여준 예제 수업은 BAL에 있고, UnitOfWork는 DAL에 있습니다. 예제 클래스에 대한 액세스를 제어하는 다른 클래스가 있기 때문에 내부에 생성자가 표시되어 있습니다. 나는 이것을 좀 더 고려해야 할 것이다. 감사! – AFrieze