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?

[rspec] サポートモジュールでロジックを共通化

Posted at

テストコード

毎回JSON.parse(response.json)をするのは面倒なので
メソッドに切り出したいです。
この処理をrequest系の処理全体で共通化します

require 'rails_helper'

RSpec.describe "Users", type: :request do
  let!(:user) { create(:user) }

  after { User.destroy_all }

  describe "GET /users" do
    before { get '/users' }
    
    it 'ユーザー覧を取得できる' do
      expect(response).to be_successful
      expoect(body.size).to eq(1) # ヘルパーを使用
    end
  end

  # ヘルパーメソッド: レスポンスJSONをパースする
  def json
    JSON.parse(response.body)
  end
end

共通化手順

1 spec/support/request_helpers.rbを作成
2 メソッド作成
3 spec/rails_helper.rbでRails.root.glob('spec/support/**/*.rb').sort_by(&:to_s).each { |f| require f }のコメントアウトを解除
4 moduleのinclude


1・2

# spec/support/request_helpers.rb
module RequestHelpers
  def body
    JSON.parse(response.body)
  end
end

3
rails8ではRails.root.glob('spec/support/**/*.rb').sort_by(&:to_s).each { |f| require f }でしたが、古いversionではDir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }の場合もあるようです。

4

RSpec.configure do |config|
  ...
  config.include RequestHelpers, type: :request
end
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?