【Rails】Turnip + RSpec + Capybara + Selenium에서 엔드 투 엔드 테스트

Rails에서 Turnip + RSpec + Capybara + Selenium을 사용하여 엔드 투 엔드 테스트를 작성하려고 시도했으므로 방법을 적어 보겠습니다.

이번에는 엔드 투 엔드 테스트를 해 실패한 곳이나 자세하게 테스트해 가고 싶은 곳에 대해서 유닛 테스트를 써 가는 느낌으로 하려고 생각하고 있습니다.



Turnip에서 시나리오를 만들고 RSpec, Capybara에서 실제로 브라우저를 조작하면서 테스트하는 느낌이라고 생각합니다. 그 때 Capybara로 스크린 샷 찍거나하면서 진행합니다.

설정



우선은 이번에 사용한 gem들입니다.

Gemfile
group :development, :test do
  gem 'rspec-rails', '~> 3.1.0'
  gem 'factory_girl_rails', '~> 4.4.1'
  gem 'capybara', '~> 2.4.3'
  gem 'selenium-webdriver'
  gem 'turnip'
end
bundle
rails g rspec:install # rspecのインストール

.rspec에 다음을 추가합니다.

.rspec
-r turnip/rspec

spec_helper.rb에 다음을 추가합니다.

spec_helper.rb
Dir.glob("spec/**/*steps.rb") { |f| load f, true }

  require 'capybara/dsl'
  require 'capybara/rspec'
  require 'turnip'
  require 'turnip/capybara'

  Capybara.default_driver = :selenium
  Capybara.ignore_hidden_elements = true
  Capybara.run_server = false

  # Chrome
  Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(app, browser: :chrome)
  end

spec 디렉토리 아래에 다음 디렉토리를 작성하십시오.
spec/features  # .featureファイル置き場
spec/steps     # steps.rbファイル置き場

selenium용 chrome 드라이버를 설치합니다.

chromedriver 다운로드).
sudo mv ~/Downloads/chromedriver /usr/bin/

지금까지 준비가 완료되었습니다.

샘플



디렉토리 구성
spec/features/login.feature
spec/steps/login_steps.rb

login.feature
# encoding: utf-8
# language: ja
機能: ログイン画面からログイン
  シナリオ: ログイン画面にアクセスしてログインする
    前提 hogehogeにアクセスする
    もし ログイン画面を表示する
    ならば ログイン画面が表示されていること
    かつ emailとpasswordを入力する
    かつ ログインボタンをクリックする
    ならば 画面に username が表示されること

login_steps.rb
# coding: utf-8
require 'rails_helper'

step 'hogehogeにアクセスする' do
  Capybara.app_host = 'http://localhost:3000/'
end

step 'ログイン画面を表示する' do
  visit 'http://localhost:3000/users/sign_in'
  page.save_screenshot 'spec/tmp/screenshots/login/page.png'
end

step 'システムログインが表示されていること' do
  expect(page).to have_content 'システムログイン'

end

step 'emailとpasswordを入力する' do
  fill_in 'user[email]', with: '[email protected]'
  fill_in 'user[password]', with: 'hogehoge'
  page.save_screenshot 'spec/tmp/screenshots/login/input.png'
end

step 'ログインボタンをクリックする' do
  click_on 'ログイン'
end

step "画面に :user が表示されること" do |user|
  expect(page).to have_content (user)
  page.save_screenshot 'spec/tmp/screenshots/login/success.png'
end

참고



Rails - Selenium (Capybara)에서 Chrome 사용하기 - Qiita
ぃ tp // 이 m / 쿠아 t로_4 / ms / 561c145fcb 또는 28718 ac7

Rubyist Magazine - 엔드 투 엔드 테스트 자동화는 Cucumber에서 Turnip
ㅡㅡㅜㅜㅜㅜㅜ 루비 st. 네 t/? 0042-F 여과 쿠쿠 m r과 r에 p # l36

Amazon.co.jp : Ruby 철저 공략 (WEB+DB PRESS plus): 角征典, 나루세 유이, 소라하 우라미즈 케이타, 타카하시 켄이치, 시바타 히로시, 콘도 우치로, 야마토 준, 하쿠토 아키라, 하라 유우(yhara), 이토 나오야, WEB+DB PRESS 편집부: 책
h tp // w w. 아마존. 이. jp / 루 바이 % 에 5 % 베 % B9 % 에 5 % 경우 % 95 % 에 6 % 94 % ~ b % 에 7 % 95 % dp/4774165344

좋은 웹페이지 즐겨찾기