RailsでRspecを使ってテストを行う
開発環境は、Windows 7 Professional(32bit) + ruby 2.3.3p222 + Rails 4.2.1。
Rspecは、Rubyでテストコードを書くためのパッケージです。今回は、rails専用のrspec-railsをインストールして、Rails上でテストコードを書いてみたいと思います。
TDD(テスト駆動開発)は、
1.テストコードを書く
2.テスト実行が失敗するようにプログラムを書く
3.テストが成功するようにプログラムを書く
4.初めに戻る
の繰り返しをしながら書く。
・Rspecでは、テストコードのことをスペックという。
1.カレントディレクトリを、テストを実行したいrailsのアプリのルート部分に設定する。
そして、gemfileに以下を追加する
group :development, :test do gem 'rspec-rails' end
そして、
bundle install
を実行し、インストールします。
2.初期設定を行うために以下のコマンドを入力
ruby bin/rails g rspec:install
そうすると、specディレクトリが自動的に作成されている。
3.モデルを作成
ruby bin/rails g model name first_name:string last_name:string
4.マイグレーションする
ruby bin/rake db:migrate RAILS_ENV=test
5./spec/modelsディレクトリに、name_spec.rbというファイルが自動的に作成されているので開く。
RSpec.describe Name, type: :model do~endのブロックの中に以下のコードを追加する。
it "test" do name = Name.new( last_name: "ken", first_name: "koi" ) expect(name.full_name).to eq "koiken" end
/app/models/name.rbを開いて、class Name < ActiveRecord::Base~endに以下のコードを追加します。
def full_name last_name + first_name end
6.Rspecを実行します。
ruby bin/bundle exec rspec
実行結果
本来、koikenと表示されることが期待されているのに、kenkoiと表示されたエラーとなっています。
ここで、name_spec.rbを以下のように修正します。
it "test" do name = Name.new( last_name: "koi", first_name: "ken" ) expect(name.full_name).to eq "koiken" end
そして、もう一度、rspecを実行します。
ruby bin/bundle exec rspec
実行結果
今度は正しく実行されました。
■参考サイト
【Rails入門】RSpecを使ったテスト方法を初心者向けに基本から解説 | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
はじめてのRSpec - まずテスト書いてからコード書くシンプルなチュートリアル
Railsでテストコードは書こう | Railsの小技 | DoRuby