Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ruby on Railsではじめるrspecテスト

1,714 views

Published on

「Ruby / Ruby on Rails ビギナーズ勉強会 第4回」での発表内容です。
Rspecを利用して、Ruby on Railsでテストを行う手順を解説しています。

■イベントページはこちらです。
https://ror-beginners.doorkeeper.jp/events/22786

■環境
rails 4.2.1
RSpec 3.0.0
ruby 2.2.1

=============================================================

「CoEdo.rb」が運営する「Ruby / Ruby on Railsビギナーズ勉強会」Ruby、Ruby on Railsなどで開発したい、触りたいための初心者勉強会&もくもく会です。

開催の連絡は以下の方法で受け取ることができます。

## DoorKeeperグループ
イベント申し込みを受け付けている、DoorKeeper でのグループです。
https://coedo-rails.doorkeeper.jp/

## Facebookグループ
イベント告知や技術情報をお互いにシェアしています。
https://www.facebook.com/groups/rorbeginners/

## Twitterハッシュタグ
ハッシュタグは、 #rubybg です。
Twitterにもイベント、勉強会の情報を流しています。

[★Ustreamでは、勉強会を生中継しています。](http://www.ustream.tv/channel/ruby-ruby-on-rails-%E3%83%93%E3%82%AE%E3%83%8A%E3%83%BC%E3%82%BA%E5%80%B6%E6%A5%BB
D%E9%83%A8)

[★Youtubeでは、ショートセッションを収録しています。](https://www.youtube.com/playlist?list=PL2ojdc4KhtHniIyIUx3AdO621ydzz5zpP)

Published in: Engineering
  • Be the first to comment

Ruby on Railsではじめるrspecテスト

  1. 1. 【CoEdo.rb】Ruby / Ruby on Railsビギナーズ勉強会 Ruby on RailsではじめるRspecテスト 2015.04.19
  2. 2. Self-Intoroduction • WordPressもくもく倶楽部@Co-Edoも来てください。 • Swiftビギナーズ倶楽部@Co-Edoも開催しています( ́ ▽ ` )ノ • Rubyで開発をしたい、アプリケーションエンジニア(LAMP/Java/Oracle) http://wp-moku.doorkeeper.jp/ 一緒に勉強しましょう( ́ ▽ ` )ノ 勉強会やってます! http://swift-beginners.doorkeeper.jp/ 徳島県出身です (ó `o)
  3. 3. 手動でチマチマと 同じテストを繰り返すのは もう絶対イヤ!! 写真素材ぱくたそ http://www.pakutaso.com
  4. 4. Railsはテストを 書きやすい仕組みが あるらしいけど どうやってやるの?
  5. 5. 1)Railsでのテストって? Today's Agenda 2)テストの環境について理解する! 3)とにかく、テストを書いてみよう!
  6. 6. 1)Railsでのテストって? 1­1)デフォルトの、Test::Unitを利用する。 Railsに標準で組み込まれているテストフレームワーク 1­2)自分の好きなテストフレームワークを導入する。 今回は、Rspecを導入してみます。
  7. 7. 今日試してみること Rspcを 導入する テスト データを 用意する (必要であれば) 失敗する テストを 書く 実装を 書く 繰り返して実装を完成させる テストが 成功する ことを確認 TDD:テスト駆動開発 (Test Driven Development)
  8. 8. 2)テストの環境について理解する! config/database.yml 開発環境 :development テスト環境:test 本番環境 :production 分離したテストデータの設定と、そのデータの取り扱いが 可能になるため、データを好きに扱うことができる。
  9. 9. 3)とにかく、テストを書いてみよう! ruby 2.2.1 rails 4.2.1 RSpec 3.0.0 今 回 の 環 境 https://github.com/mustacheyork/coedorb-rspec-vol4 ソース置いてます(ó `o)
  10. 10. 1)Railsプロジェクトを作成 rails new coedorb-vol4 2)サーバーを起動して、アクセス確認 rails s http://localhost/ Railsプロジェクトの作成から
  11. 11. 1)Gemfileに追記 group :development, :test do gem 'rspec-rails', ' > 3.0.0' end bundle install rails g rspec:install 2)下記のファイルが生成されることを確認 $ rails g rspec:install create .rspec create spec create spec/spec_helper.rb create spec/rails_helper.rb 3)「.rspec」を編集 大量の警告を出す「--warning」オプションをひとまず削除しておきます。 「--color」オプションはRSpec実行時のログを色付けを行ってくれます。 「--require」オプションはRSpec実行前に特定のファイルを読み込んでくれます。 Rspecを導入
  12. 12. 1)下記のコマンドを実行 rake db:test:prepare テスト環境のデータベースを構築
  13. 13. 1)scaffoldを利用して、管理画面を生成 rails generate scaffold user name:string address:string 2)生成されたモデルを、開発用データベースに反映 rake db:migrate 3)追加したマイグレーションを、テスト用データベースにも反映 rake db:migrate RAILS_ENV=test テスト対象の管理画面を作成
  14. 14. 1)生成された、spec/models/user_spec.rbを確認してみる require 'rails_helper' RSpec.describe User, :type => :model do pending "add some examples to (or delete) #{__FILE__}" end テストを確認
  15. 15. 1)早速テストを走らせてみる $ bundle exec rspec spec/models/user_spec.rb * Pending: User add some examples to (or delete) /Users/kanako/Documents/01_TickleCode/01_doc/02_rails4.2.1/ coedorb-vol4/spec/models/user_spec.rb # Not yet implemented # ./spec/models/user_spec.rb:4 Finished in 0.00056 seconds (files took 7.44 seconds to load) 1 example, 0 failures, 1 pending RSpecでは定義されている振る舞いの一つ一つを「サンプル(example)」と呼びます。 RSpecの出力は、サンプルが成功であれば「.」、失敗であれば「F」、保留であれば「*」を出力します。 各サンプルの詳細なレポート、最後に実行時間と全サンプル数、失敗したサンプル数、保留したサンプル数も出力します。 早速テストを実行
  16. 16. 1)spec/models/user_spec.rbを編集する require 'rails_helper' RSpec.describe User, :type => :model do it "isn't valid without name" do user = User.new user.name = nil expect(user).not_to be_valid end end テストを書く
  17. 17. モデルのバリデーションを実行していないので失敗します。 1)テストを実行 $ bundle exec rspec spec/models/user_spec.rb F Failures: 1) User isn't valid without name Failure/Error: expect(user).not_to be_valid expected #<User id: nil, name: nil, address: nil, created_at: nil, updated_at: nil> not to be valid # ./spec/models/user_spec.rb:7:in `block (2 levels) in <top (required)>' Finished in 0.02384 seconds (files took 9.52 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/models/user_spec.rb:4 # User isn't valid without name テストが失敗することを確認
  18. 18. 1)モデルにバリデーションを追加する。app/models/user.rb class User < ActiveRecord::Base validates :name, presence: true end 2)テストが成功することを確認する $ bundle exec rspec spec/models/user_spec.rb . Finished in 0.1483 seconds (files took 8.71 seconds to load) 1 example, 0 failures テストが成功する実装を書く
  19. 19. 次のステップ ・コントローラーのテスト ・テストデータを利用する。  factory_girlを導入 ・ブラウザの操作を実装する。  Capybaraを導入
  20. 20. 参考情報 ・RSpec初心者向けの資料まとめ[Ruby] http://morizyun.github.io/blog/rspec-beginner-bdd-tdd-test-first/ ・Everyday Rails - RSpecによるRailsテスト入門 https://leanpub.com/everydayrailsrspec-jp
  21. 21. Let's study together! Thank you :)

×