はじめに
最近はrspec書いてて、これどうすんねんーーーってとこあったので備忘録的な感じで書いておきます。
今回の困りごと
fields_for
でform
を追加した際に、form
の要素をどうやって指定すればいいか困りました。
今回は画像のプラスボタンを押すとformが追加されるようになっており、値を入力して保存できるかどうかをチェックしたいのですが、追加したform
のindex番号はランダムで生成されるため、
<input type="text" name="user[users_attributes][1579974088711][name]" id="users_attributes_1579974088711_name">
上記のような[1579974088711]
が数字が生成されています。
なので、
fill_in 'user[users_attributes][2][name]', with: '夜勤'
というふうにindex番号の指定ができないです。
解決策
指定ができない場合どうやって空白のformに文字入力したらいい?
- ページ内の
form
を全部検索してきて、最後の要素を指定してやればいいです。
全体から検索してくるには、
all("input[name$='[name]']")[2].set("夜勤")
のようにすれば入力してくれるようになります。
find("input[name$='[name]']")[0].set("夜勤")
でもいけるようですが、自分は動きませんでしたのでall
で全体から探すようにしています。
おわりに
今回findで動かなかったがすごい気持ちわるいなーと思ったんですが、無事テストはできたんでよかったです。
なので、動的に追加したform
のテストはこれでfind
か all
で全体から探して、そのindex番号で指定してやればいいかと思います。
なにかご指摘等あればよろしくお願いします。