プログラミング

[System spec]form_withに変更した時のエラーの対処法

投稿日:

こんにちは、Nanayakuです。

form_forからform_withに変更した時、System spec(fill_in)でエラーが起きたので、その対処法を紹介します。

fill_inでエラーになる

どのようなエラーが起きていたかと言うと、fill_inで入力するメールアドレス (label)が見つからないと言うエラーでした。

下記のようなログインのテストを実行します。

root_path

login_path



すると、下の画像のようにメールアドレスが見つけられないとエラーが出ます。

'メールアドレス'を'email'に変更しても同じでした。

 

対処法

対処法は、入力部分をidで指定する方法です。

メールアドレス の入力部分に「id: 'sesstion_email'」、パスワードの入力部分に「id: 'sesstion_password'」を追記します。

追記したものが、下記になります。

 

テストは以下のように書き直すと、テストが通ります。

 

上手くいかなかった方法

Capybara で同名の CSS セレクタを持つ複数の HTML 要素から任意の要素を見つける | EasyRamble」を参考に、共通のCSSクラスを指定する方法を行いましたが、ログインに成功できませんでした。

自分は、共通のクラスの「form-control」を指定しました。

 

参考サイト

【RSpec/capybara】fill_inが上手く動作しない - Qiita

Capybara で同名の CSS セレクタを持つ複数の HTML 要素から任意の要素を見つける | EasyRamble

 

まとめ

form_forからform_withに変更し、System specの「fill_in」でエラーが起きた時は、「label」名ではなく「id」名で指定する。

-プログラミング
-

Copyright© Nanayaku blog , 2019 All Rights Reserved Powered by AFFINGER5.