Gebで補完効かなくて苦しんでる人が観測範囲で結構多いので、GebでIDEの力を借りる方法書きます。
Gebのバージョンは0.13.1で試しています。
やり方は二つで
- 省略を使わない
- IntelliJ IDEA使う
です。
省略を使わない
GebはGroovyの機能を使って記述を省略し、完結にすることがウリの一つです
省略する.groovy
def "ログインして新着情報を確認する"() {
when: 'サンプルページの表示'
to SignInPage
at SignInPage
and: 'ユーザー名とパスワードを入力して'
signIn "SAMPLE_USER", "SAMPLE_PASSWORD"
// 略
}
ただ、上記のように書くとIDEでの補完はほぼ効きません。
というわけで、記述を省略せず、シンタックスを明示してあげると補完が効くようになります。
明示する.groovy
def "ログインして新着情報を確認する"() {
when: 'サンプルページの表示'
SignInPage signInPage = browser.to SignInPage // 左辺の型と変数名を明示。右辺のbrowserも明示。
browser.at SignInPage // browserを明示
and: 'ユーザー名とパスワードを入力して'
MainPage mainPage = signIn.signIn "SAMPLE_USER", "SAMPLE_PASSWORD" // ページオブジェクトの型を明示
// 略
}
上記のように書くと、明示した型については補完が効くようになります。
簡潔さを取るか、IDEの補完を取るか、というトレードオフになりますが、それは実際に携わる人やチームの状況などで決めればよいかな、と思います。
IntelliJ IDEAつかう
IntellJ IDEAはもう少し空気読んでくれます。
-
browser
に定義されている、to
とat
の後のページオブジェクトの補完ができる(GebSpec
を継承しているものに限る) -
Page
やModule
内で、どうファイル内に定義されているコンテンツをメソッドなどで呼び出すときに補完が効く
です。
GebのTwitterアカウントが、なぜこれができるのか、というのに言及していました。
So this is why InjtelliJ understands Geb's content definition blocks: https://t.co/4Te49UvE52
— Geb (@GebFramework) January 10, 2016
ツイート内のリンク先はIDEAのプラグインのソースコードです。興味がある人は覗いてみてもいいかも。