В проекте, к которому я только что присоединился, достаточно широко используется шаблон команд для обработки вызовов на уровнях бизнес-логики проекта.
Уровни бизнес-логики построены как статические обработчики, обращающиеся к поставщикам. Затем команды вызывают эти статические обработчики.
Команда хочет улучшить покрытие тестами, и я хотел бы, чтобы мы больше двигались в сторону настоящего TDD, но использование статических обработчиков означает, что в командах есть жестко запрограммированная зависимость, и нет способа внедрить обработчики как зависимости и поэтому очень трудно выполнить модульное тестирование команд в отдельности.
Есть ли у кого-нибудь хорошие предложения относительно стратегии, по которой мы могли бы перейти к более тестируемому шаблону команд, учитывая, что уже используется много команд.
Приведенный ниже метод процесса будет вызываться при выполнении команды. Это будет тестируемый метод. Это типичный пример использования статических обработчиков в классах команд.
protected override bool Process()
{
this.user = SecurityHandler.ActivateUser(this.activationGuid);
bool success = this.user != null;
if (!success)
{
this.AddStatusMessage(StatusMessageType.Error, "/Commands/Security/ActivateUserCommand/IncorrectLink", true);
}
return success;
}