0
1

More than 1 year has passed since last update.

Rspecインストールの手順

Posted at

環境

MacOS Big Sur11.5.2
ruby 3.0.2
rails 6.1.4
docker 20.10.6

Gemのインストール

まずは Gemfile にrspec-railsrspec_junit_formatterを追加します。
本番環境では RSpec を使わないので、開発とテスト環境にのみ gem をインストールさせます。

Gemfile
group :development, :test do

  gem 'rspec-rails' # 追加
  gem 'rspec_junit_formatter' # 追加

end

そしてdocker-compose run web bundle installとdocker-compose buildをします。

Rspecの基本設定

以下のコマンドでRspecをインストールします。

$ docker-compose run web rails g rspec:install

Rspecの実行

この段階ではまだ何もテストは書いていませんが、動作確認の意味で RSpec を実行してみます。

$ docker-compose run web rails spec
Starting rails-scaffold-circleci_webpacker_1 ... done
Creating rails-scaffold-circleci_app_run     ... done
No examples found.


Finished in 0.00124 seconds (files took 0.38309 seconds to load)
0 examples, 0 failures

まだ何もテストを書いていないので当然テスト(exmaple) は 0、失敗(failure)も 0 ですが
とりあえず RSpec が動作していることは確認できました。

テスト用 model 生成

最低限のテストを行うため、適当に User モデルだけ作成しておきます。
string型の name, email カラムを用意しておきましょう。

$ docker-compose run web rails g model User name:string email:string

上記コマンドに以下のマイグレーションファイルが自動されます。

db/migrate/[timestamp]_create_users.rb
class CreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps
    end
  end
end

自動生成されたマイグレーションファイルをもとに、マイグレーションを行います。

$ docker-compose run web rails db:migrate

これで、name カラムと email カラムを持った User モデルが作成されました。
次は User モデルに対するテストを RSpec で書いてみます。

Userモデルのテスト用RSpecファイルを生成

rspec-rails を入れているので、テスト用のファイルは rails g コマンドで生成できます。

$ docker-compose run web rails g rspec:model User
rspec/models/user_spec.rb
require 'rails_helper'

RSpec.describe User, type: :model do
  pending "add some examples to (or delete) #{__FILE__}"
end

これを書き換えていきましょう。
今回はとりあえずテストが出来ればよいので、適当な name と email を持ったユーザーを登録できることを確認します。

修正後
rspec/models/user_spec.rb(修正後)
require 'rails_helper'

RSpec.describe User, type: :model do

  it "name と email を持ったユーザーを登録できること" do
    user = User.new(
      name: "John",
      email: "john@example.com",
      )
     # オブジェクトをexpectに渡す動作が有効であることを確認
     expect(user).to be_valid
  end

end

これで RSpec を実行してみましょう。

$ docker-compose run web rails spec

失敗 (failure) は無く成功していることを確認します。

Finished in 0.10029 seconds (files took 8.17 seconds to load)
1 example, 0 failures

これでテストが実行できることを確認しました。

参考

0
1
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
1