У меня есть вызов метода localtime
то, что я записал модульный тест на. Я отбираю вызов к localtime
в моем тесте так, чтобы я знал ожидаемые ответы.Пока все хорошо. Я, оказывается, выполняю модульный тест на машине в другом часовом поясе и, очевидно, тестовый сбой, потому что они - некоторый # часов прочь. Я предполагаю, что мог динамично определить корректные математические ожидания, но это, кажется, идет вразрез с идеей знать ответ прежде, чем задать вопрос.
Какие-либо мысли о том, как приблизиться к этому? Переопределение localtime
? Это кажется экстремальным значением.
Спасибо!
Я не думаю, что есть какая-то проблема с вычислением значений ответов в модульном тесте. Юнит-тесты должны быть достаточно простыми, чтобы избежать ошибок, связанных со сложностью, но простой расчет часового пояса, вероятно, не переходит границы.
В данном конкретном случае, однако, вы можете установить часовой пояс на фиксированное значение (или несколько) как часть теста. См. это сообщение на Stack Overflow о установке часового пояса в Perl.
Я не совсем уверен, каковы ваши требования, но вы можете что-то сделать, используя Test :: MockTime или Time :: Mock , оба из которых заменят localtime
и его друзей на поддельные версии, которые ведут себя так, как вы хотите.