Help us understand the problem. What is going on with this article?

RailsでRSpecテストを実行するまで

More than 1 year has passed since last update.

これまで全くテストを書かずにアプリ制作を進めてしまっていたので,勉強も兼ねてRSpecを導入してみました.
細かい設定はさておき,とりあえず1つテストを動かしてみることを目標にします.

環境

OS macOS 10.13.4
ruby 2.5.0
rails 5.1.5

railsアプリはすでに作成済みとします.

gemのインストール

Gemfile
group :development, :test do
  ~
  gem 'rspec-rails'
end
command
bundle install

RSpecのインストール

command
rails g rspec:install

specファイルの作成

今回はmodelのテストを書いてみます.

command
rails g rspec:model [model_name]

spec/models/[model_name]_spec.rbというファイルが作成されます.

テストの作成

とりあえずテストで期待する振る舞いだけ記述してみます.
describeブロックの中でitに続けて振る舞いを書きます.
(競馬のアプリを作ってるのでサンプルはそれに依ってます)

horse_spec.rb
require 'rails_helper'

RSpec.describe Horse, type: :model do
  it 'gets gate class depends on gate number'
end

試しにrspecを実行してみます.

command
bundle exec rspec

すると

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) Horse gets gate class depends on gate number
     # Not yet implemented
     # ./spec/models/horse_spec.rb:4


Finished in 0.00956 seconds (files took 4.74 seconds to load)
1 example, 0 failures, 1 pending

テスト内容を記載していないのでpendingとして扱われます.
ともかく,最初のテストを作成することが出来ました.

テストの実装

ではテストを実装していきます.
modelのインスタンスを生成して,メソッドの戻り値を検証するテストです.

horse_spec.rb
require 'rails_helper'

RSpec.describe Horse, type: :model do
  it 'gets gate class depends on gate number' do
    horse = Horse.new(1, 2, 'キタサンブラック', '牡5 57 武豊', '1.9(1人気)')
    expect(horse.get_gate_class).to eq 'horse-table gate-number'
  end
end

再度テストを実行すると

Finished in 0.00344 seconds (files took 0.6508 seconds to load)
1 example, 0 failures

無事テストを成功させることが出来ました.

最後に

今回はとりあえずテストを動かすことにピンを留めてやってみました.
ですので,RSpecの良さをほとんど活かせてないと思います.
いつかRSpecのメリットを伝えられる記事を書けるようになりたいなあ.おわり.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした