結論
デベロッパーツール(検証モード)を使って、対象となるfieldのname属性の値を調べ、その値をfill inの要素にする。
(変更前)
spec/system/users_spec.rb
fill_in 'メールアドレス', with: @user.email
↓
(変更後)
spec/system/users_spec.rb
fill_in 'user[email]', with: @user.email', with: @user.email
この記事の内容
system Specを用いて結合テストコードをする際、テスト実行コマンドを実行すると、Capybara::ElementNotFound:エラーが出ました。
そのエラーを解決する方法とプロセスを記事にしています。
エラーの概要
エラーの和訳
"Email"は無効となっている。というのも、使用できないものであるから。
テストコードの内容
spec/system/users_spec.rb
require 'rails_helper'
RSpec.describe 'ユーザー新規登録', type: :system do
before do
@user = FactoryBot.build(:user)
end
context 'ユーザー新規登録ができるとき' do
it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
visit root_path
expect(page).to have_content('新規登録')
visit new_user_registration_path
fill_in 'メールアドレス', with: @user.email #←問題の箇所
# 〜省略〜
エラー解決までのプロセス
①エラーを見る
"Email"が無効となっているので、使用できない。
ということはfieldの名称が異なるものをテストコードで記述していることがわかる。
②検証ツールで確認
やっぱり違うものになっている。
③テストコードの記述を変更する。
(変更前)
spec/system/users_spec.rb
fill_in 'メールアドレス', with: @user.email
↓
(変更後)
spec/system/users_spec.rb
fill_in 'user_email', with: @user.email
無事エラー解決がしました。
エラーを超えて、完成したテスト
完成したテストコードについて以下記事にしています!
よろしければご覧ください!
以上です。