Я могу добавить метод к типу Java Integer в Groovy со строками:
ExpandoMetaClass.EnableGlobally()
Integer.metaClass.gimmeAP = {->return 'p'}
Я не знаю, зачем мне это нужно, но это понятно. Теперь я могу звонить целым числам и возвращать «p». Теперь допустим, что я хочу это в приложении Grails, чтобы я мог совершать звонки в доменных объектах. Конкретная проблема, с которой я сталкиваюсь, заключается в том, что когда я помещаю эти строки метапрограммирования в загрузчик, все метапрограммирование не доступно в модульных тестах, поэтому мои модульные тесты завершаются с ошибками типа «Нет метода gimmeAP для java.lang.Integer». или что-то в этом роде.
Как мне лучше включить метапрограммирование или выполнить эту часть начальной загрузки, чтобы я мог использовать свой синтаксис с трюками в модульных тестах?
Я видел этот вопрос: Grails - создание глобально доступных методов и программирование метаклассов и, похоже, моя строка ExpandoMetaClass.EnableGlobally()
может решить его проблему, но я правильно ее использую?