В моем приложении некоторые из тестов Geb немного шелушатся, так как мы отключаем HTTP-запрос проверки ajax после изменения каждого поля формы , Если вызов ajax не возвращается достаточно быстро, тест взрывается.Использование NonEmptyNavigator.metaClass.invokeMethod {...}, чтобы ввести короткую паузу после заданного поля
Я хотел проверить простое решение для этого, которое (правильно или неправильно, давайте не будем вдаваться в эту дискуссию здесь ...) заключается в том, чтобы ввести короткие паузы в 100 мсек или после паузы после каждого поля, поэтому я начал искать как &, где я мог бы это сделать.
Похоже, мне нужно добавить Thread.sleep
после вызова методов NonEmptyNavigator.setInputValue
и NonEmptyNavigator.setSelectValue
. Я создал подкласс GebSpec
, в который я добавил статический блок инициализации:
static {
NonEmptyNavigator.metaClass.invokeMethod = { String name, args ->
def m = delegate.metaClass.getMetaMethod(name, *args)
def result = (m ? m.invoke(delegate, *args) : delegate.metaClass.invokeMissingMethod(delegate, name, args))
if ("setInputValue".equals(name) || "setSelectValue".equals(name)) {
Thread.sleep(100)
}
return result
}
}
Однако я добавил некоторый журнал отладки, и я заметил, что когда я исполню свою спецификацию я никогда не ударил этот код. Что я здесь делаю неправильно ...?
Из groovyConsole этот код работает нормально. Может быть, это проблема грааля? – Opal
Yeh Я думал, что, возможно, что-то переписывает мои изменения в метаклассе ... – rcgeorge23