最近はRuby on RailsアプリのテストにminitestではなくRSpecを使用している企業さんも多いということで、個人アプリにRSpecを導入してみました。
ということでRSpecの導入方法を入門という形で簡単に説明します。
目次
Gemfileに追加
Bundlerを使ってRSpecをインストールします。
group :test do
# ~ (omitted) ~
gem 'rspec-rails'
end
bundle install
RSpecの初期設定
RSpecの初期設定をします。
bin/rails generate rspec:install
初期設定が完了するとspecディレクトリが作成されるので、そこにテストファイルを置いていくことになります。
RSpecの配置ルール/ディレクトリ構成
RSpecの配置ルールいわゆるディレクトリ構成は調べると色々あって混乱しますが、個人的にはこの構成が一番しっくりきました。
spec ー ー ー models
|
|ー controllers
|
|ー views
|
|ー features
|
|ー support
MVCのディレクトリはminitestと同様で分かりやすいです。featuresは統合テスト、supportは共通処理/定義/設定用のディレクトリになります。
Rspec公式サイトを見るとviewsはsystemの方が良いかもなあとか混乱しましたが、個人アプリ開発の範疇であれば自分が分かりやすい構成でやるのが一番です。まあプロジェクトごとの規則に従えば良いと思います。
Qiita
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UlNwZWMlRTMlODMlODElRTMlODMlQkMlRTMlODMlODglRTMlODIlQjclRTMlODMlQkMlRTMlODMlODgmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPWUxMGY2YjZmYWRhMWY2OGJmNDBjY2UwODIxODA3Mzg1&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtb3JyciZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MGJiMzRhYjQyZWU1NTg0ZTAzOTg3NDNiMWM2NTIyNTg&blend-x=142&blend-y=486&blend-mode=normal&s=3fefc996734955451cba4a4ed5e9eea2)
RSpecチートシート – Qiita
前回: FactoryGirlチートシートFactoryGirlに続いてRSpecの使い方を調べてみました。当文書は単にツールとしてのRSpecの使い方のまとめです。TDD/BDDの概念やワー…
テストを作成する
Userモデルがあったとしてユーザーの存在性をテストする場合のテストを書いてみます。
require 'rails_helper'
RSpec.describe User, type: :model do
let (:user) { User.new(name: "Example User", email: 'user@example.com')}
it "should be valid" do
expect(user).to be_valid
end
end
テストを実行する
テストを実行します。
bundle exec rspec
コメント