🐭

RSpec (Capybara) で使えるメソッド 入力編

2023/12/14に公開

はじめに

ラブグラフエンジニアのひろです!
今回は RSpec でよく使うメソッドをまとめてみました。

入力でよく使うもの

fill_in

文字や数値の入力をおこなうフィールドを操作したい場合は fill_in

.spec
fill_in "book[title]", with: "入力したい文字列"

fill_in "book[price]", with: "500"
HTML
<input required="required" type="text" name="book[title]" id="book_title">

<input required="required" type="number" name="book[price]" id="book_price">

select

セレクトボックスを操作したい場合は select

.spec
select "ホラー", from: "book[category]"
HTML
<select name="book[category]" id="book_category">
<option selected="selected" value="">未選択</option>
<option value="sf">SF</option>
<option value="horror">ホラー</option>
<option value="other_worldly_transfer">異世界転生</option>
<option value="love_romance">ラブロマンス</option>
# ... 省略

choose

ラジオボタンを操作したい場合は choose

.spec
choose "公開"
HTML
<input type="radio" value="false" name="book[book_visible]" id="book_visible_false" /> 非公開
<input type="radio" value="true" name="book[book_visible]" id="book_visible_true" /> 公開

attach_file

ファイルを選択したい場合は attach_file

.spec
attach_file "book[thumbnail]", Rails.root.join("spec/support/images/thumbnail.png")
HTML
<input accept="image/*" class="input-book-thumbnail" type="file" name="book[thumbnail]" id="book_thumbnail">

入力関連のポイント

data-confirm が設定されていて確認ダイアログが出る場合、ボタンを .click するだけでは突破できません。
.clickaccept_confirm で囲む必要があるので注意ですね。

.spec
page.accept_confirm do
  first("span", text: "削除").click
end
HTML
<a class="btn red waves-effect" data-confirm="本を削除しますか?" rel="nofollow" data-method="delete" href="/admin/books/XXX">
  <i class="fas fa-trash-alt"></i>
  <span>削除</span>
</a>

終わりに

テストをまとめて書く機会があったので、そのときに社内向けにまとめたものを記事にしました。
判定編も別に用意する予定です!

お読みいただきありがとうございました!

ラブグラフのエンジニアブログ

Discussion