Как проверить весь контент модуля Geb, используя Spock одновременно, не утверждая каждый элемент в отдельности?

У меня есть модуль с содержанием, определенным для каждого элемента на веб-странице, с которой я работаю:

package com.abc.modules

import geb.Module

class Member extends Module {
    static content = {
        // Member fields
        mbrID {$("div.subject-details div.memberDetails input.projMbrId")}
        mbrName {$("input.projMbrName")}
        mbrRegion {$("select.projMbrReg")}
        mbrAdd1 {$("input.projMbrAdd1")}
        mbrAdd2 {$("input.projMbrAdd2")}
        mbrAdd3 {$("input.projMbrAdd3")}
        mbrCity {$("input.projMbrCity")}
        mbrState {$("select.projMbrState")}
        mbrZip {$("input.projMbrZip")}
        mbrHomePhone {$("input.projMbrHomePhone")}
        mbrHomePhoneExt {$("input.projMbrHomePhoneExt")}
        mbrWrkPhone {$("input.projMbrWorkPhone")}
        mbrWrkPhoneExt {$("input.projMbrWorkPhoneExt")}
        mbrEmail {$("input.projMbrPersonalEMail")}
        mbrWrkEmail {$("input.projMbrWorkEMail")}
    }
}

В моей тестовой спецификации я утверждаю, что каждый элемент, содержащийся в моем модуле, присутствует, но единственный способ, которым я знаю, как это сделать, это утверждать каждый элемент по отдельности:

package cmdr.ProjectCover

import com.gdit.qa.fwa.geb.cmdr.pages.HomePage
import com.gdit.qa.fwa.geb.cmdr.pages.ProjectCover
import geb.spock.GebReportingSpec

class VerifyMemberFields extends GebReportingSpec {
    def setupSpec() {
        // Log in to app
        via HomePage
        loginPage.signIn("marco", "abc123")

        // Navigate to Member Page
        memberPageButton.click()
    }

    def "Verify Member fields exist"() {
        when: "User selects Member option for subject type"
        at ProjectCover
        projSubject.click()
        projCoverMbrFields.projSubjectMbrOption.click()

        then: "All expected member fields are displayed in the left panel"
        assert projCoverMbrFields.mbrID.present
        assert projCoverMbrFields.mbrName.present
        assert projCoverMbrFields.mbrRegion.present
        assert projCoverMbrFields.mbrAdd1.present
        assert projCoverMbrFields.mbrAdd2.present
        assert projCoverMbrFields.mbrAdd3.present
        assert projCoverMbrFields.mbrCity.present
        assert projCoverMbrFields.mbrState.present
        assert projCoverMbrFields.mbrZip.present
        assert projCoverMbrFields.mbrHomePhone.present
        assert projCoverMbrFields.mbrHomePhoneExt.present
        assert projCoverMbrFields.mbrWrkPhone.present
        assert projCoverMbrFields.mbrWrkPhoneExt.present
        assert projCoverMbrFields.mbrEmail.present
        assert projCoverMbrFields.mbrWrkEmail.present
    }

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

2 ответа

Я не знаю, как это сделать на данный момент, но это будет возможно и относительно легко, когда внедрится GEB-369.

У меня нет времени, чтобы проверить это, но я думаю, что это должно сработать, если вы хотите попробовать:

def "Verify Member fields exist"() {
    when: "User selects Member option for subject type"
    at ProjectCover
    projSubject.click()
    projCoverMbrFields.projSubjectMbrOption.click()

    then: "All expected member fields are displayed in the left panel"
    projCoverMbrFields.content.each{ element ->
        assert element.present
    }
}
Другие вопросы по тегам