RSpecのsystemスペックの記述中に、ダイアログが表示された時のテストはどのように処理を書いたら良いのか分からず、つまずいていました。

調査したところ、以前では以下のコードのようにダイアログの操作を行うのが一般的だったようです。

page.driver.browser.switch_to.alert.accept

こちらは、Seleniumを使用したブラウザ操作方法のようですね。

Seleniumとは

WebアプリのUIをプログラムで操作するためのツールで、WebアプリのUIのテストを自動化するために使用されるとの事。

Capybaraのメソッドを使う

Capybaraにもダイアログの操作を行うメソッドが用意されたので、そちらを使用するのが良さ気かも。

メソッド動作
accept_confirmOKボタンを押す。
dismiss_confirmキャンセルボタンを押す。

公式のドキュメント に記載されている使用例だと、以下のような構文となります。

page.accept_confirm do
  click_link 'リンク名'
end

どちらのメソッドも戻り値としてダイアログの本文を返すので、ダイアログの本文のテストを行う事も可能です。

投稿者: TWEI

趣味はプログラミング。 以前は仕事でプログラミングをやっていました。現在はWebエンジニアを目指して勉強中。 勉強で得た知識などをブログで発信していく予定です。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA