3

作業している Web ページの各要素に対して定義されたコンテンツを含むモジュールがあります。

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
    }

モジュールの各要素を個別にアサートするのではなく、モジュールのコンテンツ全体を一度にアサートして、機能メソッドのブロック条件を減らす方法があるかどうか疑問に思っています。

4

2 に答える 2