&tag(RSpec/Rails3へ導入); *目次 [#dfe1083a] #contents *関連ページ [#x20ce175] -[[RSpec]] *参考情報 [#ja202bd2] *使用方法(Rails3編) [#t4d143c0] -[[RSpecでRailsのテストをしてみるテスト。 | Ginpen.com:http://ginpen.com/2012/02/14/rspec-rails/]] **インストール [#d3403589] -Gemfileに追加 gem 'rspec-rails' -bundle実行 bundle install --path=vendor/bundle -RSpec用の共通ファイルを用意 #pre{{ bundle exec rails g rspec:install create .rspec create spec create spec/spec_helper.rb }} **テスト実行 [#had37ee3] ,bundle exec rake spec,spec以下の全てのspecを実行 ,bundle exec rake spec,spec/modles以下の全てのspecを実行。 ,bundle exec rake SPEC=spec/models/entry_spec.rb,個別のspecを実行 ,bundle exec rspec spec/models/entry_spec.rb,個別のspecを実行rakeより速いかも。 **サンプル [#xfd6f6e2] -[[Rails 3 でやってみた --『スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)』 - 牌語備忘録 - pygo:http://d.hatena.ne.jp/CortYuming/20120526/p3]] -ブログサンプルを作ってみる ***railsプロジェクトを生成 [#uf9d9337] -普通に生成。 ***インストール [#p25596a7] -Gemfileに追加し、bundle実行 ***モデルの生成 [#rda8095a] -bundleで実行する #pre{{ $ bundle exec rails generate model Blog name:string invoke active_record create db/migrate/20130419052115_create_blogs.rb create app/models/blog.rb invoke rspec create spec/models/blog_spec.rb }} ***マイグレーション実行 [#z94b4d6b] -null不可に変更。 #pre{{ class CreateBlogs < ActiveRecord::Migration def change create_table :blogs do |t| t.string :name, :null => false t.timestamps end end end }} -マイグレーションを実行する。 $ bundle exec rake db:migrate ***フィクスチャ作成 [#h186b8ed] -spec/fixtures/blogs.ymlを作る #pre{{ one: id: 1 name: その1 two: id: 2 name: その2 }} ***spec作成 [#n7c8f91a] -spec/models.blog_spec.rb #pre{{ # -*- coding: utf-8 -*- require 'spec_helper' describe Blog, "#name が設定されていない場合:" do before(:each) do @blog = Blog.new end it "バリデーションに失敗すること" do @blog.should_not be_valid end end }} ***spec実行 [#jbb0152d] -rake spec SPEC=spec/models/blog_spec.rbを実行する 。この段階では失敗。 bundle exec rake pec SPEC=spec/models/blog_spec.rb -次のようにvalidateすれば成功するようになる #pre{{ class Blog < ActiveRecord::Base attr_accessible :name validates :name, presence:true end }} **ひな形の生成 [#ac1c3a2e] ***単体のcontroller specのひな形を生成 [#n90e4d4a] -以下のコマンドで生成できる。けど空のファイルになる。 bundle exec rails g rspec:controller softwares -scaffoldと同時につくると中身充実のcontroller用rspecが作られる。後から単体でつくる方法は不明(見本をみながらコピーするしかないかも)。 bundle exec rails g scaffold item