Использование Groovy для макета обернутого класса - PullRequest
0 голосов
/ 18 июня 2009

В настоящее время я пытаюсь вернуться и написать модульные тесты для некоторого кода, который упаковывает существующий класс. Функция, которую я ищу, имеет код, который выглядит следующим образом ...

private OldObject oldObject
...
public Boolean method(){
  Boolean returnValue = false
  if(oldObject.method(100)){
    returnValue = true  
  }
  if(oldObject.method(101)){
    returnValue = true
  }
}

Я думал об использовании metaClass, что-то вроде OldObject.metaClass.method {return true}, но я не уверен, как удалить это до следующих испытаний.

Кто-нибудь имеет лучшие практики / помощь для такой ситуации?

1 Ответ

0 голосов
/ 19 июня 2009

Чтобы смоделировать метод, используйте:

OldObject.metaClass.method = {return true}

Имейте в виду, что это будет издеваться над методом для всех экземпляров OldObject, но также возможно смоделировать метод только для одного экземпляра. Если вы хотите удалить смоделированный метод, просто установите для metaClass значение null:

OldObject.metaClass = null

Я думаю, вам нужно использовать хотя бы Groovy 1.6, чтобы это работало.

...