0
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?

More than 1 year has passed since last update.

【Rspec】Activehashを用いた結合テストコードの書き方

Last updated at Posted at 2023-05-11

経緯

オリジナルアプリケーションの結合テストコードを記述していたところ、activehashを用いた選択肢の部分で通常のフォームとは異なるため、記述の仕方がわからなかった。

開発環境

Ruby:2.6.5
Rails:6.0.6.1

書き方

フォーム入力する際はfill_inを用いるが、activehashを用いたテストコードは以下の形式で記入する。
select '選択肢', from: 'name属性'

スクリーンショット 2023-05-11 12.47.27.png
スクリーンショット 2023-05-11 13.01.59.png

selectの選択肢に箇所はプルダウンの選択肢を文字列として記載する。(htmlとして確認する場合は、検証ツールからoptionタグで囲まれているものを記述)
fromのname属性は、該当箇所を検証ツールで開いて確認して記載する。今回は性別の箇所を検証ツールで確認して、nameのuser[sex_id]をfrom:の後ろに記載する。

users.spec.rb
require 'rails_helper'

def basic_pass(path)
  username = ENV["BASIC_AUTH_USER"]
  password = ENV["BASIC_AUTH_PASSWORD"]
  visit "http://#{username}:#{password}@#{Capybara.current_session.server.host}:#{Capybara.current_session.server.port}#{path}"
end

RSpec.describe "ユーザー新規登録", type: :system do
  before do
    @user = FactoryBot.build(:user)
  end
  context 'ユーザー新規登録ができるとき' do 
    it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
      # トップページに移動する
      basic_pass root_path
      visit root_path
      # トップページにサインアップページへ遷移するボタンがあることを確認する
      expect(page).to have_content('新規登録')
      # 新規登録ページへ移動する
      visit new_user_registration_path
      # ユーザー情報を入力する
      fill_in 'メールアドレス', with: @user.email
      fill_in 'パスワード', with: @user.password
      fill_in 'パスワード(確認)', with: @user.password_confirmation
      fill_in 'ニックネーム', with: @user.nickname
      select "男性", from: 'user[sex_id]'
      select "161 - 165cm", from: 'user[height_id]'
      select "71 - 75kg", from: 'user[weight_id]'
省略

最後にコマンドを入力してテストが成功するか確認する。

bundle exec rspec spec/system/users_spec.rb

備忘録も兼ねて投稿しました。

参考文献

0
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
0
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?