2017-09-28 3 views
2

私は私が働いているWebページ上の各要素のために定義されたコンテンツを持つモジュールを持っている:各要素を個別にアサートすることなく、一度にSpockを使用してGebモジュールのコンテンツ全体を確認するにはどうすればよいですか?

私は私のモジュールに含まれる各要素が存在するが、唯一の方法は、私が知っていると主張しています私のテスト仕様で
package com.gdit.qa.fwa.geb.cmdr.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 
    } 

を(代わりに、個別に私のモジュールの各要素を主張する)主張:行うにはどのようにそれは、個別に各要素をアサートすることによってです私のフィーチャーメソッドはブロック条件を減らすことができます。

答えて

1

私は現時点でそれを行う方法はわかりませんが、GEB-369が実装されていると、これは可能で比較的簡単です。

-1

私はこれをテストする時間がありませんが、私はあなたがそれを試してみることにしたい場合は、これは動作するはずだと思う:

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 
    } 
} 
関連する問題