目標
- rails6 × docker 環境でrspecを導入したい
前提
- Docker on mac
- Ruby on Rails6
手順
1.Gemfileにgemを追加する
以下のgemを:develop, :testに追加する
gem "rspec-rails"
gem "factory_bot_rails"
/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 "rspec-rails"
gem "factory_bot_rails"
end
2.サーバーを立ち上げているのとは別のターミナルからrspecをインストールする
MacBook-Air アプリ名 % docker-compose run web rails g rspec:install
Starting アプリ名_db_1 ... done
Running via Spring preloader in process 64
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
これで設定ファイルがアプリのディレクトリに作られる
さっそくテストを作成してみる
modelのspecを書くため、ジェネレーターで生成してみる
まず以下のコマンドで関連ファイルが自動生成される。modelは自身のmodel.
MacBook-Air アプリ名 % docker-compose run web rails g rspec:model モデル名
Starting アプリ名_db_1 ... done
Running via Spring preloader in process 64
create spec/models/reception_spec.rb
invoke factory_bot
create spec/factories/receptions.rb
生成できたら今回はバリデーションに関するテストを書く
/spec/factories/reception.rb
FactoryBot.define do
factory :reception do
name {"サンプル訪問者1"}
purpose {"面談"}
organization {"サンプル株式会社"}
end
end
/spec/models/reception_spec.rb
RSpec.describe Reception, type: :model do
reception = FactoryBot.create(:reception)
it 'receptionインスタンスが有効' do
expect(reception).to be_valid
end
end
specを追記したら、
MacBook-Air アプリ名 % docker-compose run web bundle exec rspec
で実行完了
MacBook-Air アプリ名 % docker-compose run web bundle exec rspec
Starting アプリ名_db_1 ... done
.
Finished in 0.22889 seconds (files took 6.32 seconds to load)
1 example, 0 failures
参考文献