Почему нет никакого IDateTimeProvider в.NET, и DateTime имеет Теперь метод считывания?

В настоящее время я пишу модульный тест на компонент, который делает дату и время определенная проверка. Я создал IDateTimeProvider интерфейс, который служит a DateTime.UtcNow сновальная машина и бизнес-объекты используют интерфейс, а не DateTime непосредственно. Кажется, что DateTime немного перегружается и должен быть разделен на значение и вещь, которая получает то значение от ОС. Интересно, существует ли конкретная причина не иметь a IDateTimeProvider (IClock) интерфейс в.NET?

7
задан Kimi 28 June 2010 в 10:46
поделиться

2 ответа

Проще говоря: потому что большие части BCL не были предназначены для тестирования.

То же самое верно и для генерации случайных чисел с точки зрения «основной» функциональности - и многие классы, связанные с HTTP, гораздо хуже подделать :( По крайней мере, в этом случае довольно легко ввести свои собственные часы интерфейс.

С другой стороны, когда Noda Time готов к производственному использованию, он не только предоставит лучший API даты и времени, чем BCL, но и более удобный для тестирования :)

7
ответ дан 7 December 2019 в 05:17
поделиться

Мы последовательно используем класс-обертку DateTimeProvider, который мы можем переопределить в тестовом контексте, если это необходимо...

1
ответ дан 7 December 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: