はじめに
未経験者の方や一人で勉強していたり、プログラミングスクールに通っていた人は
あまりテストコードを書く習慣がないと思いますが
現場では、テストコードを書く作業はとても大事です
今回はruby、RSpecで導入し、簡単なテストコードを書いてみます
RSpecをインストール
1.Gemfileに追加
Gemfile
group :development, :test do
# 〜 省略 〜
gem 'rspec-rails'
end
インストールします
$ bundle install
2.RSpecの初期設定
次のコマンドを実行し初期設定をします
$ bin/rails generate rspec:install
RSpecを使うための準備ができました。
テスト実施
テスト対象とするサンプルのモデルを作成
姓(last_name)と名(first_name)を属性に持つUserクラスを作成し、姓名を返却する「full_nameメソッド」を持つ仕様
次のgenareteコマンドを実行
$ rails g model user first_name:string last_name:string
DBのマイグレーションを実行
$ rails db:create
$ rails db:migrate
user.rbにfull_nameメソッドを作成
/models/user.rb
def full_name
last_name + " " + first_name
end
テストコードを書く
expect(実行結果).to eq 期待する結果
文章にすると「実行結果は期待結果と等しいこと」となります
ここでは
full_nameメソッドが姓名を返すことを検証するテストコードを書きます
spec/models/user_spec.rb
RSpec.describe User, type: :model do
it "姓、名を登録すると、姓名が取得できること" do
user = User.new(
last_name: "侍",
first_name: "太郎"
)
expect(user.full_name).to eq "侍 太郎"
end
end
テストの実行
RSpecを実行する
bundle exec rspec
実行結果:
テストが成功した場合は,下記のようになります
Finished in 0.08988 seconds (files took 11.41 seconds to load)
1 example, 0 failures
※失敗した場合は、下記のようになります
Failures:
# 〜 省略 〜(エラーの内容が表示される)
Finished in 0.15678 seconds (files took 11.69 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/models/user_spec.rb:4 # User 姓、名を登録すると、姓名が取得できること
ここまでRSpec導入からテスト実施の流れを書いてみました
ありがとうございました