【Rails】JavaScriptが絡むテスト
はじめに
Capybaraでのテストで、JavaScriptが作動する処理をする場合には少し設定を変える必要があります。
今回は簡単な例としてクリックするとテキストが変わる処理についてテストしてみます。
設定
まずはCapybaraを導入する必要がありますが、わからない方は過去に書いたこちらの記事を参照してください。
続いてhelperファイルに追記します。
# 最後の行に追加
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
Capybara.javascript_driver = :selenium_chrome_headless
※ なぜかjavascript_driverにwebkitを使うとうまくいきませんでした…
詳しい方いたらコメントいただけると助かります。
テストファイル
spec/features
の下にファイルを用意します。
require 'rails_helper'
feature 'post', type: :feature do
scenario 'jsが動作すること', js: true do
# クリックの表示が存在する
visit root_path
expect(page).to have_content('クリック')
# クリックの文字をクリックするとOKになる
find('.js-class').click
expect(page).to have_text("OK")
end
end
jsを動作させたい場合は上述のようにscenarioの行にjs: true
を追記する必要があります。
念のためviewファイルとjsファイルも載せておきます。
(HamlとjQueryを使ってます)
.header
= link_to "トップページ", root_path
.js-class
クリック
$(function(){
$(".js-class").on("click", function() {
$(this).text("OK");
})
})
テスト実行
あとはターミナルから実行するだけです。
$ bundle exec rspec spec/features/sample_spec.rb
Author And Source
この問題について(【Rails】JavaScriptが絡むテスト), 我々は、より多くの情報をここで見つけました https://qiita.com/koki_73/items/ffc115ed542203161cef著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .