2014-11-01 1 views
1

У меня есть страница, которая использует модуль для определения содержимого формы. Он довольно универсален для использования, но ему нужны разные результирующие страницы после запуска действий формы (нажатие кнопки и т. Д.).Возможно ли пройти через шаблонную опцию в модуль (как переменный параметр)

class CreateOrganisationPage extends Page { 
    static url = "#contact/organisation/create" 

    static at = { 
     form.displayed 
    } 

    static content = { 
     form(wait: true) { 
      module BusinessEntityFormModule, businessEntityName: 'organisation' 
     } 
    } 
} 

Модуль реализации содержимое формы содержит управляющий интерфейс saveCommand, который требует, что страница ViewBusinessEntityPage будет перемещаться, чтобы после подачи. Чтобы сохранить этот модуль более многоразового использования в разных тестах, я хотел бы предоставить эту страницу как параметр . Каков наилучший подход?

class BusinessEntityFormModule extends Module { 
    String businessEntityName = "entity" 
    String idPrefix = "edit" 
    static content = { 
     self { 
      def id = "$idPrefix-" + StringUtils.capitalize(businessEntityName) 
      $("form", id: id) 
     } 

     saveCommand(to: ViewBusinessEntityPage) { 
      $('[data-command="save"]') 
     } 
    } 
} 

ответ

0

Просто определите свойство для целевой страницы в модуле и использовать его в определении содержания:

class BusinessEntityFormModule extends Module { 
    Class postSavePage 

    static content = { 
     saveCommand(to: postSavePage) { 
      $('[data-command="save"]') 
     } 
    } 
} 

А затем установить его при определении модуля в качестве части страницы:

class CreateOrganisationPage extends Page { 
    static content = { 
     form(wait: true) { 
      module BusinessEntityFormModule, businessEntityName: 'organisation', postSavePage: ViewBusinessEntityPage 
     } 
    } 
} 
+0

Это именно то, что я пробовал, но кажется, что параметры не оцениваются по экземпляру, и поэтому возникает исключение: '' Вызванный: groovy.lang.MissingPropertyException: Нет такого свойства: postSavePage для класса: de.troi.acceptancetest.contact.organisation.BusinessEntityFormModule Возможные решения: postSavePage \t в groovy.lang.Closure.getPropertyTryThese (Closure.java : 321) \t на groovy.lang.Closure.getPropertyOwnerFirst (Closure.java:315) \t в groovy.lang.Closure.getProperty (Closure.java:304) '' Так он будет работать только с определенным свойством как статический, который побеждает цель –

+0

Это должно работать, по крайней мере, в 0.10.0, который был выпущен 2 недели назад. Существует [проблема, которую я исправил] (https://jira.codehaus.org/browse/GEB-245), которая точно описывает, что вы делаете, и есть [тестовый пример для него] (https://github.com /geb/geb/blob/master/module/geb-core/src/test/groovy/geb/PropertiesInModuleContentSpec.groovy#L41), который проходит. Если он не работает в 0.10.0, то это ошибка, и, пожалуйста, создайте для нее новую проблему. – erdi

+0

Хорошо, я все еще на 0.9.3, что объясняет многое, и действительно я должен был упомянуть об этом. –

 Смежные вопросы

  • Нет связанных вопросов^_^