2016-03-23 34 views
0

我發現我不斷重複自己與GEB斷言。如何使用geb進行乾燥?

例如,這是我的許多之前需要斷言:

browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript') 

那是什麼可以被重新用於保存查詢規範的模式?

記住查找是去與一個「斷言」,所以它必須執行時,瀏覽器是在一個特定的狀態(即我不能做一次查找並保存結果)。

爲背景,這裏有一個完整的例子:

Given(~'I should see the example error response on the page') { -> 
    assert browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript').text() =~ /\}/ 
    assert browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript').text() =~ /\{/ 
} 
+1

你在使用網頁嗎?我認爲這是黃瓜?你有沒有看過https://github.com/geb/geb-example-cucumber-jvm –

+0

我是新來groovy和這個完整的堆棧,並剛剛交給一個現有的項目來處理。我不相信它正在使用網頁。這是黃瓜。不過,我找到了一個解決方案,我將作爲答案發布。感謝GEB例子的鏈接(但它使用頁面,不管是什麼!?!)。 – russellr

+0

剛剛看了一下Pages,似乎是一個很好的選擇。我將把它放在TO DO列表中以備將來重構。 – russellr

回答

0

是乾的,我現在這樣做:

class ExampleErrorResponse { 
    static Object get(browser) { 
     return browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript'); 
    } 
} 

,我可以使用這樣的:

Given(~'I should see the example error response on the page') { -> 
    assert ExampleErrorResponse.get(browser).text() =~ /\}/ 
    assert ExampleErrorResponse.get(browser).text() =~ /\{/ 
} 

如果您發現此方法存在任何問題/疑難問題,請發表評論。