是否可以通过模板选项传递给模块(作为变量参数)

时间:2014-11-01 09:31:46

标签: geb

我有一个页面,它使用模块来定义表单内容。它通常可以使用,但在触发表单操作(按钮点击等)后需要不同的结果页面。

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

    static at = {
        form.displayed
    }

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

实现表单内容的模块包含一个UI控件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"]')
        }
    }
}

1 个答案:

答案 0 :(得分: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
        }
    }
}