Как выполнить модульное тестирование функций, вызывающих localtime () в Perl? - PullRequest
5 голосов
/ 14 июля 2010

У меня есть метод, вызывающий localtime, для которого я написал модульный тест. Я тестировал localtime в своем тесте, чтобы знать ожидаемые ответы. Все идет нормально. Я выполнил модульное тестирование на машине в другом часовом поясе, и, как и ожидалось, тесты не пройдены, потому что у них осталось несколько # часов. Я полагаю, что мог бы динамически определить правильные ожидаемые значения, но это, кажется, идет вразрез с идеей знать ответ, прежде чем задавать вопрос.

Есть мысли о том, как подойти к этому? Переопределить localtime? Это кажется крайним.

Спасибо!

Ответы [ 2 ]

6 голосов
/ 14 июля 2010

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

В этом конкретном случае, однако, вы можете установить часовой пояс на фиксированное значение(или несколько) как часть теста.См. Этот пост переполнения стека о установка часового пояса в Perl .

5 голосов
/ 14 июля 2010

Я не совсем уверен, каковы ваши требования, но вы могли бы что-то сделать, используя Test :: MockTime или Time :: Mock , оба из которых будутзамените localtime и друзей надруганными версиями, которые ведут себя так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...