Допустим, у меня есть класс
class Original {
def originalMethod = 1
}
Теперь, скажем, у меня есть экземпляр этого
val instance = new Original
Можно ли теперь что-то сделать с instance
во время выполнения, чтобы заменить originalMethod
другим методом? (при условии, что подпись остается прежней)
Например, теперь при вызове instance.originalMethod
будет вызываться следующий код println("test"); 1
ИЗМЕНИТЬ Я не могу позвонить new Original
. У меня просто есть существующий экземпляр, который я должен изменить.
EDIT 2 (@Aleksey Izmailov answer) Это хорошее решение, но это не совсем то, что я ищу. Я больше думаю в плане тестирования - написание класса "по-нормальному", без указания функций как переменных, а не методов
PS. Я наткнулся на этот вопрос, когда пытался имитировать шпиона Mockito.
@MockBean
или@SpyBean
аннотаций среды Spring. - person scarface   schedule 06.07.2021