まず、Rspecのインストール。
通常版とRails版の両方があるようなので、両方インストールしておく。
gem install rspec Successfully installed rspec-2.14.1 1 gem installed Installing ri documentation for rspec-2.14.1... Building YARD (yri) index for rspec-2.14.1... Installing RDoc documentation for rspec-2.14.1...
gem install rspec-rails Successfully installed rspec-rails-2.14.0 1 gem installed Installing ri documentation for rspec-rails-2.14.0... Building YARD (yri) index for rspec-rails-2.14.0... C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/yard-0.8.6.2/lib/yard/parse r/source_parser.rb:98: warning: redundant nested repeat operator: /lib\/generato rs\/**\/*_spec.rb/ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/yard-0.8.6.2/lib/yard/parse r/source_parser.rb:104: warning: redundant nested repeat operator: /lib\/generat ors\/**\/*_spec.rb/ Installing RDoc documentation for rspec-rails-2.14.0...Rails版の方は良くわからない警告が出ているけれどもとりあえず大丈夫そうである。
次に、Factory Girlのインストール。
こちらも通常版とRails版の両方があるようなので、両方インストールしておく。
gem install factory_girl Successfully installed factory_girl-4.2.0 1 gem installed Installing ri documentation for factory_girl-4.2.0... Building YARD (yri) index for factory_girl-4.2.0... Installing RDoc documentation for factory_girl-4.2.0...
gem install factory_girl_rails Successfully installed factory_girl_rails-4.2.1 1 gem installed Installing ri documentation for factory_girl_rails-4.2.1... Building YARD (yri) index for factory_girl_rails-4.2.1... Installing RDoc documentation for factory_girl_rails-4.2.1...Gemfileにも、下記のように設定を追加しておく。
group :development do gem 'rspec' gem 'rspec-rails' gem 'factory_girl_rails' endそして、railsコマンドからRspecのインストール。
rails g rspec:install create .rspec create spec create spec/spec_helper.rbこれでひとまずインストール完了。
下記のように、新規にmodelをgenerateすると、Rspec用のファイル(spec/models/XXX_spec.rb)とFactory Girl用のファイル(spec/factories/XXX.rb)が自動で生成されるようになる。
rails g model shake name:string invoke active_record create db/migrate/20130803121017_create_shakes.rb create app/models/shake.rb invoke rspec create spec/models/shake_spec.rb invoke factory_girl create spec/factories/shakes.rb新規に作成したmodelを'rake db:migrate'した後、下記のようにRspecを実行させると、一応動作する。
rake spec Rack::File headers parameter replaces cache_control after Rack 1.5. [33m* [0m Pending: [33m Shake add some examples to (or delete) E:/Sites/mytest/spec/models/shake_ spec.rb [0m [36m # No reason given [0m [36m # ./spec/models/shake_spec.rb:4 [0m Finished in 0.027 seconds [33m1 example, 0 failures, 1 pending [0m Randomized with seed 9086デフォルトの状態ではテスト結果がpendingになっているので、まずFactory Girl用のファイル(spec/factories/shakes.rb)を編集してテストデータを準備する。
FactoryGirl.define do factory :shake do name "First Shake" end end次に、Rspec用のファイル(spec/models/shake_spec.rb)を編集する。
ここでは、ひとまず名前だけをチェックするように設定してみる。
describe Shake do it 'The first name of Shake must be First Shake.' do shake = FactoryGirl.create(:shake) expect(shake.name).to eq('First Shake') end endところが、実行するとエラーが出てしまう。
rake spec Rack::File headers parameter replaces cache_control after Rack 1.5. [31mF [0m Failures: 1) Shake The first name of Shake must be First Shake. [31mFailure/Error: [0m [31mshake = FactoryGirl.create(:shake) [0m [31mNameError [0m: [31muninitialized constant FactoryGirl [0m [36m # ./spec/models/shake_spec.rb:5:in `block (2 levels) in <top (required )>' [0m Finished in 0.032 seconds [31m1 example, 1 failure [0m Failed examples: [31mrspec ./spec/models/shake_spec.rb:4 [0m [36m# Shake The first name of Shak e must be First Shake. [0m Randomized with seed 14976Rspecの設定ファイル(spec/spec_helper.rb)に、Rails版のFactory Girlの設定を下記のように追加しておく必要があるようだ。
# This file is copied to spec/ when you run 'rails generate rspec:install' ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'rspec/autorun' require 'factory_girl_rails'設定後に再度Rspecを実行すると、無事に成功した。
rake spec Rack::File headers parameter replaces cache_control after Rack 1.5. [32m. [0m Finished in 0.09301 seconds [32m1 example, 0 failures [0m Randomized with seed 4852
0 件のコメント:
コメントを投稿