どうもShota(@Mii4a2501)です。
System SpecでDestroyアクションを行う際、ダイアログを操作しようとしたところ、はまってしまったので備忘録。
alert_confirmとdismiss_confirm
pageインスタンスには、
alert_confirm => OKを押す用のメソッド
dismiss_confirm => キャンセルを押す用のメソッド
この二つの操作用メソッドが用意されています。
(accept_alertというOKボタンのみダイアログ用の操作メソッドもあるようです)
注意点
上記メソッドを使う際、若干の工夫が必要です。
qiita.rb
expect{
page.accept_confirm
# expectブロック内に一つ以上のfind,expectが必要
expect(page).to have_content "削除に成功しました"
}.to change(School, :count).by(-1)
このようにして、expectブロック内に一つ以上findやexpectがない限り、ダイアログが表示されacceptされる前に次に進んでしまい、結果がfailureとなってしまいます。
(ちなみに自分はまだ現場未経験の人間なのですがこのテクニックはおなじみだそうで....)
最後に
同じ状況に陥ってしまった方の助けになれば幸いです!