2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学習27日目

Posted at

今日学んだこと

結合テストで上手くいかなかったことまとめ

内容

click後にすぐ画面遷移しない

(解決法) have_contentを挟む

expect(page).to have_content("hoge")

クラスを取得したい

(解決法) ピリオドの後にクラス名を書く(CSSと同じ)

expect(page).to have_selector(".hoge")

submitボタンを取得したい

(解決法) input[name="commit"]を指定する

expect(page).to have_selector('input[name="commit"]')

プルダウンで特定の条件を選択させたい

(解決法) select xx, from: yy を使う

select 'name', from: 'user[name]'

※ selectの後は「選択させたいもの」、fromの後はname属性を指定する

「current_pathが特定の文字列を含む」という条件を指定したい

(解決法) matchを使う

expect(current_path).to match(".*hoge.*")

※ ワイルドカードを使う場合は「.*」としないと「任意の文字列」を表さないので注意(正規表現と同じ)

削除ボタンクリック後のturbo_confirmに対する動作を指定したい

(解決法) page.accept_confirm do 〜 end, page.dismiss_confirm do 〜 end を使う

(OKしたい場合)

page.accept_confirm do
  find("削除").click
end

(キャンセルしたい場合)

page.dismiss_confirm do
  find("削除").click
end

複数要素が存在する場合に、findで特定のもののみ指定したい

(解決法) find_allを使う

find_all("hoge")[0]

※ 上記の場合、「hoge」という文字列を含む要素のうち1番最初のものを取得する

感想

結合テストは特にエラーが多く、原因特定に苦労するものも多かった。
一度で覚えるのは無理なので、何度も書いて覚えていきたい。

余談

CRUD処理を一通り備えたオリジナルアプリの作成と、テストコードの記述までが完了しました。
ユーザー体験の向上を考え、この後はエラーメッセージの日本語化に取り掛かる予定です。
(モデル単体テストの書き直しが発生します...)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?