事前準備
- モジュールを扱うファイルの先頭に下記の記述をする
require "rails_helper"
- spec/rails_helper.rbの下記のコメントアウトを外す
# support配下にあるファイルを一つずつ読み込んでいる
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
# モジュールを作成して使う手順
- spec/support/[任意の名前]_support.rbのファイルを作成。今回は例として下記のモジュールを作成
module SignInSupport
# OmniAuthの環境をテストに切り替えている今回は例として下記のモジュールを作成
# OmniAuthをモック化してGitHubのレスポンスとして引数で指定した値を返す
def sign_in_as(user)
OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(
user.provider,
uid: user.id,
info: { nickname: user.name,
image: user.image_url }
)
visit root_path
click_on "GitHubでログイン"
end
def current_user
@current_user
end
end
2. 作成したモジュールを使うためのincludeをspec/rails_helper.rに下記のように書くことでrails_helper.rbを読み込んだすべてのファイルで使えるようになります。
略
Rspec.configure do |config|
config.include SignInSupport
end
略
spec別にモジュールをincludeしてもよい(下記)
# (例)spec/system/〇〇_spec.rb
RSpec.feature 'Home', type: :system do
include SignInSupport
end