結合テスト#2
今日の学び
新単語は先に書き出すべし
テストは基本ミスってるところを教えてくれるから、それに従う。
必要とされるのは、知識より根気。。。
have_selector
セレクタの有無を確認
expect(page).to have_selector ".content_post[style='background-image: url(#{インスタンス変数とか});']" # !カッコではなくスペース!
(追記2023/9/2)
セレクタの指定
要素: a, p, img (ドットなし)
属性: .クラス名, .id名 (ドットあり)
have_link
a要素に対して、リンクの有無を確認
expect('要素').to have_link 'ボタンの文字列', href: 'リンク先のパス'
have_no_link
当てはまるボタンがないことを確認
expect('要素').to have_no_link 'ボタンの文字列', href: 'リンク先のパス'
all
findは要素が1個の時しか使えない。allならまとめて取得できる。
# 同名のクラス 全要素 all('クラス名') #◯番目のhogeクラス。 #一番上に表示されているのが[0]、二番目が[1]... all('hoge')[0]
have_field
form要素の有無を確認。
#id名で指定するときに'#'はつけない。 have_field('id名') #入力された内容まで確認するならwith have_field('id名', with: "hoge")
find_link().click
a要素をクリックする時に使う
find_link('リンクの文字列', href: 'URL').click
サポートモジュール
spec/support/hoge_support.rb
を作成して、その中にモジュールを定義
#モジュールを定義 module HogeSupport def hoge(user) ... end end
spec/rails_helper.rb
のコメントアウトを外す。RSpec.configureに読み込み設定を追記。
# コメントアウトを外す Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f } RSpec.configure do |config| # 下記を追記 config.include HogeSupport ...
これでテストファイル内で、hoge(user)が使えるようになる。
(インスタンスメソッドの定義に似ている)
補足
chat GPT このコードの意味を以下に解説します: