Используя ScalaTest, я хочу заменить реализацию функции в тестовом примере. Мой вариант использования:
object Module {
private def currentYear() = DateTime.now().year.get
def doSomething(): Unit = {
val year = currentYear()
// do something with the year
}
}
Я хочу написать модульный тест для тестирования Module.doSomething
, но я не хочу, чтобы этот тестовый пример зависел от фактического года, в котором выполняется тест.
В динамических языках я часто использовал конструкцию, которая может заменить реализацию функции и вернуть фиксированное значение.
Я хотел бы, чтобы мой тестовый пример изменил реализацию Module.currentYear
, чтобы всегда возвращать 2014 год, независимо от фактического года.
Я нашел несколько фиктивных библиотек (Mockito, ScalaMock,...), но все они могли создавать только новые фиктивные объекты. Казалось, ни один из них не может заменить реализацию метода.
Есть ли способ сделать это? Если нет, то как я могу тестировать такой код, не завися от года запуска теста?