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 3 years have passed since last update.

RSpec導入手順

Last updated at Posted at 2021-05-01

最近RSpecを使い始めたので、導入手順をメモ

環境

Rails 6.0.3.6
MySQL
Docker

--skip-testを指定して new

Gem

Gemfile
.
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'capybara'
  gem 'rspec-rails'
  gem 'factory_bot_rails'
end
.

webmock等は一旦入れない予定で。

RSpecをインストール

bin/rails g rspec:install

Running via Spring preloader in process 167
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb

上のように4つ作成される。

  • .rspec : RSpec用の設定ファイル

  • spec : スペックファイルを格納するディレクトリ

  • spec/spec_helper.rb, spec/rails_helper.rb : RSpecでカスタマイズするヘルパーファイル

テスト用のDB準備

bin/rails db:migrate RAILS_ENV=test

RSpecの書式変更

--format documentation を追加することで、RSpecの出力を読みやすいドキュメント形式に変更することができる

.rspec
--require spec_helper
--format documentation

FactoryBot設定追加

以下の様に設定することで、FactoryBotのメソッドの呼び出しが楽になる。

spec/rails_helper.rb
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods

end

(例)

# 設定前
user = FactoryBot.create(:user)

# 設定後
user = create(:user)

rails_helper.rbに設定追加

Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }がコメントアウトされているので、それを外す。

そうすることで、spec/support/配下のファイル を読み込むことができる。

spec/rails_helper.rb
require 'spec_helper'
.
.
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
.
RSpec.configure do |config|
 .
 .

rspec生成ファイルの定義を修正

プロジェクト作成時に--skip-testを指定していると、Minitestが作られないが、それと同時にRSPecを導入しても、Model等を生成した時に、同時にrspecファイルを生成してくれないようになっているため設定する。

下記コードの一番上の行をコメントアウトにし、以下の様に設定を追加する。falseを設定してrspecファイルは自動生成されなくなる。

config/application.rb
# config.generators.system_tests = nil

config.generators do |g|
  g.test_framework :rspec,
    fixtures: false,
    routing_specs: false
end

RSpecを起動してみる

ここまで設定したら、動作確認してみましょう

bundle exec rspec

No examples found.

Finished in 0.00231 seconds (files took 0.17073 seconds to load)
0 examples, 0 failures

テストファイルは書いていませんが、RSpecが動作していることは確認できました

後日、capybaraの設定等を追加します

参考記事

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?