2012-06-11 2 views
1

Работа над проектом, в котором наша система использует тайм-аут nservicebus для запуска события каждые 24 часа. Возможно ли, посредством модульного тестирования, «подделать» 24 часа, поэтому тест может быть запущен в любой момент времени, поэтому не нужно ждать за день до запуска теста?Возможно ли ускорить процесс тестирования тайм-аута nservicebus?

Переопределенный Тайм-аут метод выглядит следующим образом:

public override void Timeout(object state) 
{ 
ExportFileGenerator.GenerateFile(_entryDataStore.GetEntriesOlderThan(DateTime.Now)); 
RequestUtcTimeout(TimeSpan.FromHours(TimeLeftToDailyJob()), ""); 
} 

ответ

1

Вы просто, что извлекая зависимость от услуг, связанных со временем (в вашем случае, это было бы TimeLeftToDoDailyJob метод).

Там вы в основном два способа достижения этой цели:

  • сделать метод виртуальным и подготовить проверяемой версии вашего класса с этим методом возвращением некоторые очень маленьким (unnoticable) Значением
  • экстракта, что метод к новому классу и ввести пример такого класса, как зависимость от вашего тестируемого класса (инверсия управления с инжектором конструктора)

Я бы выбрал второй подход, поскольку он y усиливает более развязанный дизайн, что приводит к менее сложному коду и, как результат, более легким испытаниям.

Смежные вопросы