Я не эксперт в Geb, я могу объяснить только отличное значение кода.
1-й, это не статический блок инициализации, как в Java.В этих строках static content = {...}
вы присваиваете статической переменной экземпляр Closure, который оценивается и выполняется LATER (следовательно, lazy
).
Закрытие представляет собой (часть) Groovy Builder Geb, который вызывается средой Geb для регистрации / выполнения некоторых задач.
Нет аналога Java для достижения того же, и это причинапочему основанные на Groovy фреймворки так приятно использовать в целях тестирования, и они следуют общему правилу:
тестовый код должен быть более абстрактным, чем тестируемый код
ОБНОВЛЕНИЕ:
Эта строка:
toggle { $("div.menu a.manuals") }
может быть переписана как
toggle( { $("div.menu a.manuals") } )
или
def a = { $("div.menu a.manuals") }
toggle a
, так что это вызов метода ине назначение.В groovy вы можете опустить скобки в некоторых случаях.