Несмотря на то, что я действительно изо всех сил пытаюсь улучшить TDD, я хочу пройти тест на это.
Следующая строка разрушает вашу модель:
public static DeployEntities DeployEntities = new DeployEntities();
Статическая жестко запрограммированная зависимость => Невозможно провести модульное тестирование вашей модели изолированно.
Чтобы ослабить связь между вашим DAL и моделью, вы можете ввести абстракцию:
public interface IApplicationRepository
{
IQueryable<Application> GetApplications();
}
, и тогда ваша модель может использовать инжекцию конструктора:
public class ApplicationModel
{
private readonly IApplicationRepository _repository;
public ApplicationModel(IApplicationRepository repository)
{
_repository = repository;
}
public static IQueryable<Application> GetApplicationList()
{
var applications = _repository.OrderByDescending(a => a.Name);
return applications.AsQueryable<Application>().Distinct();
}
}
Теперь в модульном тесте вы могли бы использовать среду моделирования, такую как Rhino Mocks или Moq, чтобы смоделировать этот репозиторий и установить на него ожидания и иметь возможность модульного тестирования метода GetApplicationList в отдельности.