やっぱり、テストが重要だろうということでRSpecの本を読んだので、そのまとめ。セットアップはメモしとかないと忘れるのでメモ。
Everyday Rails - RSpecによるRailsテスト入門
RSpecのセットアップ。
以前はあれこれインストールしなくてはいけませんでしたが、RSpec 3.6
からはかなりシンプルになりました。
rspec-rails
とテストスイートの起動時間を速くするspring-commands-rspec
をインストール。
Gemfile
group :development, :test do
gem 'rspec-rails', '~> 3.6.0'
gem "factory_bot_rails"
end
group :development do
gem 'spring-commands-rspec'
end
Gemfile
に追記後。
$ bundle install
binstub
を作成
$ bundle exec spring binstub rspec
テストデータベースがなければ以下の方法で追加する。
config/database.yml
test:
<<: *default
database: db/test.sqlite3
config/database.yml
test:
<<: *default
database: db/ project_test
`project_test`の部分は自分のアプリケーションにあわせて適切に置き換える
次にrakeタスクを実行して接続可能なデータベースの作成。
$ bin/rails db:create:all
$ bin/rails g rspec:install
Running via Spring preloader in process 2541
create .rspec ← RSpec用の設定ファイル
create spec ← スペックファイルを格納するディレクトリ
create spec/spec_helper.rb ← RSpec用の設定ファイル
create spec/rails_helper.rb
Rspecの出力をデフォルトの形式からドキュメント形式へ変更(やらなくてもいい)
.rspec
--require spec_helper
--format documentation
$ bin/rspec
Running via Spring preloader in process 56846
No examples found.
Finished in 0.00074 seconds (files took 0.144553 seconds to load)
0 examples, 0 failures
config/application.rb
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
module Projects
class Application < Rails::Application
config.load_defaults 5.1
config.generators do |g|
g.test_framework :rspec,
view_specs: false,
helper_specs: false,
routing_specs: false,
request_specs: false
end
end
end
$ bin/rails g rspec:model user
$ bin/rails g rspec:controller users
$ bin/rails g factory_bot:model user
$ bin/rails g rspec:feature users
設定終わり。