Я смотрю в TDD и столкнулся со сценарием, с которым я мог бы помочь.
Мой проект использует MVC3 и структурирован так, чтобы иметь слой BAL и DAL. Каждый слой находится в своем собственном проекте. BAL обращается к базе данных через шаблон репозитория. Поскольку я использую EntityFramework, я также реализовал шаблон UnitOfWork. Вот как выглядит класс обслуживания в BAL:
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
}
}
Вопрос: Я хотел бы создать для этого модульный тест (очевидно, я должен был написать тест перед кодом). Однако, если я выполню код как есть, тест будет интеграционным, поскольку он будет использовать UnitOfWork и подключаться к моей базе данных. Я мог бы создать новый UnitOfWork, который обращается к фиктивным данным в памяти, но я не понимаю, как внедрить его, поскольку конструктор является внутренним. Я бы не стал писать модульные тесты, которые находятся внутри каждого проекта.
Есть мысли?