はじめに
これは、Geb Advent Calendar 2016の9日目の記事です。
今日はライトにtoとviaの話します。
to()とvia()
違い
どちらもページ遷移のオブジェクトですが、下記の違いがあります。
メソッド | atが暗黙で呼ばれるか |
---|---|
to | 呼ばれる |
via | 呼ばれない |
というわけで要するに、toを利用した際は、暗黙でそのページが正しいページかのチェックが走ります。
なので、遷移先のページでリダイレクトなどがあるのであれば、atチェックが暗黙でかかるとテストが落ちてしまうので、viaを使う必要があります。
蛇足
ちなみに、toはPageObject内でも定義できるのですが、それは下記のように複数ページを指定することができます。
static content = {
loginButton(to: [LoginSuccessfulPage, LoginFailedPage]) { $("input.loginButton") }
}
こちら、最初のページオブジェクトのatチェックが失敗すると、次のページオブジェクトのatチェックが走るようになっています。
公式には何にも書いてないので想像なのですが、この仕様、toメソッドが内部でatチェックしてるおかげで次のページを見に行けてるので、ここにもtoとviaの違いって出てきてるんだなぁと感じます。
参考ドキュメント
まとめ
toとviaはatが違う!