Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
R S P E C 勉 強 会
1
I n d e x
xUnit or xSpec?
RSpecの概要
RSpec拡張
FactoryGirlの概要
参考文献
2
x U n i t
o r
x S p e c ?
3
x U n i t 系 と x S p e c 系
4
xUnit xSpec
コンセプト テストの期待値を得る
その機能の振る舞いはどうゆう
ものか
書き方
関数、メソッドのような書き
方
DSLを採用していることが多い
学習コスト 低い 高...
書 き 方 の 違 い
“fizz”を返すメソッドと”buzz”を返すメソッドを持つ
FizzBuzzクラスの例
5
F i x t u r e s と F a c t o r y G i r l
Fixtures
ymlファイルに1レコードづつ書く
FactoryGirlに比べると実行速度は早い
Validationは通らない
カラムが増えると全部のレコード...
R S p e c の 概 要
7
R S p e c と は
プログラムの振る舞い(Behaviour)を記述するためのDSLを
提供するフレームワーク
プログラムを書く前に振る舞いを書く = BDD(振舞駆動開
発)を強く意識
BDDの目的は、そのソフトウェアが使われる状況を...
基 本 的 な 使 い 方
ファイル名は*_spec.rb
spec/ 以下にテストコードを追加していく
rspec <ファイル名> で実行
covarails等と組み合わせるとカバレッジを表示することも
できる
.rspecファイルにrspe...
R S p e c の 書 式
describe : テストの対象、説明
クラス名、メソッド名を記載するとGood
context : テストの条件
~の場合、~である時
it(example) : テストの内容、期待値
~である事
expec...
l e t
テストの内部で使用できる変数、関数的なイメージ
let : ブロック{}で記載
describe, context内で定義し、it内で呼び出しが可能
letは遅延評価でlet!は即座に評価
迷ったときはlet!にしておくと安全
11
同 じ テ ス ト を グ ル ー ピ ン グ
shared_examples_forでテストコードをグルーピング、
it_behaves_likeでグループを呼び出し
contextのグルーピングはshared_contextとinclude...
l e t + グ ル ー ピ ン グ S a m p l e
13
グルーピングを行う前 グルーピング後
テ ス ト の 前 処 理 と 後 処 理
beforeで前処理、afterで後処理
:suite => 全テストの実行前後に一回
:all => 各ブロック(context/describe)の前後
:each => 全てのitブロックの前後...
よ く 使 う 抹 茶 ー ( m a t c h e r )
(not_)to eq : 等価かどうか
to be
be_empty : オブジェクトが空であるか
be (>|<|>=|<=) : オブジェクトに対しての比較
be_nil :...
R S p e c 拡 張
16
R S p e c と 組 み 合 わ せ る と 便 利
rspec-rails
Selenium
Poltergeist
Capybara
17
R S p e c - R a i l s
controller
type => :controller
get/post/put/delete アクション名, パラメータ
request
type => :request
get/post/p...
F a c t o r y G i r l の 概 要
19
F a c t o r y G i r l に つ い て
オブジェクトから定義したデータを生成してくれる
テストデータ投入に使われる
ソースコードでテストデータを定義する
20
F a c t o r y G i r l の 定 義
21
ス ト ラ テ ジ ー
create : テストデータを作成する
build : テストクラスのValidationを行った後のインスタン
スを生成して返す
stub : Validationも行わず、インスタンス生成のみ
_list : 一括...
D S L
trait : 複数の属性をグループ化し、factoryに適用出来る
transient : 一時的な変数、attributeを定義できる。trait内に
ネストすることも可能
sequences : 連番を生成
callbacks...
24
参 考 文 献
25
参 考 文 献
使えるRSpec入門・その1
http://qiita.com/jnchito/items/42193d066bd61c740612
rspecガイドライン
http://betterspecs.org/jp/
RSpecの(d...
Nächste SlideShare
Wird geladen in …5
×

R spec勉強会

305 Aufrufe

Veröffentlicht am

2016/08/27 開催 社内向け
Rspec勉強会

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

R spec勉強会

  1. 1. R S P E C 勉 強 会 1
  2. 2. I n d e x xUnit or xSpec? RSpecの概要 RSpec拡張 FactoryGirlの概要 参考文献 2
  3. 3. x U n i t o r x S p e c ? 3
  4. 4. x U n i t 系 と x S p e c 系 4 xUnit xSpec コンセプト テストの期待値を得る その機能の振る舞いはどうゆう ものか 書き方 関数、メソッドのような書き 方 DSLを採用していることが多い 学習コスト 低い 高い 可読性 読みづらい 読みやすい
  5. 5. 書 き 方 の 違 い “fizz”を返すメソッドと”buzz”を返すメソッドを持つ FizzBuzzクラスの例 5
  6. 6. F i x t u r e s と F a c t o r y G i r l Fixtures ymlファイルに1レコードづつ書く FactoryGirlに比べると実行速度は早い Validationは通らない カラムが増えると全部のレコードを書き直しが発生 FactoryGirl ソースコードにテストデータを記載 Validationが通る 学習コストが高い 毎回Validationを通すと遅い 6
  7. 7. R S p e c の 概 要 7
  8. 8. R S p e c と は プログラムの振る舞い(Behaviour)を記述するためのDSLを 提供するフレームワーク プログラムを書く前に振る舞いを書く = BDD(振舞駆動開 発)を強く意識 BDDの目的は、そのソフトウェアが使われる状況を説明す るための言語を単純化することでコミュニケーションを後 押しすること 8 Given When Then
  9. 9. 基 本 的 な 使 い 方 ファイル名は*_spec.rb spec/ 以下にテストコードを追加していく rspec <ファイル名> で実行 covarails等と組み合わせるとカバレッジを表示することも できる .rspecファイルにrspecコマンドのオプションを書いておく ことも出来る 9
  10. 10. R S p e c の 書 式 describe : テストの対象、説明 クラス名、メソッド名を記載するとGood context : テストの条件 ~の場合、~である時 it(example) : テストの内容、期待値 ~である事 expect : 対象の評価をする skip : 対象のテストをスキップする 10
  11. 11. l e t テストの内部で使用できる変数、関数的なイメージ let : ブロック{}で記載 describe, context内で定義し、it内で呼び出しが可能 letは遅延評価でlet!は即座に評価 迷ったときはlet!にしておくと安全 11
  12. 12. 同 じ テ ス ト を グ ル ー ピ ン グ shared_examples_forでテストコードをグルーピング、 it_behaves_likeでグループを呼び出し contextのグルーピングはshared_contextとinclude_context を使う 12
  13. 13. l e t + グ ル ー ピ ン グ S a m p l e 13 グルーピングを行う前 グルーピング後
  14. 14. テ ス ト の 前 処 理 と 後 処 理 beforeで前処理、afterで後処理 :suite => 全テストの実行前後に一回 :all => 各ブロック(context/describe)の前後 :each => 全てのitブロックの前後 14
  15. 15. よ く 使 う 抹 茶 ー ( m a t c h e r ) (not_)to eq : 等価かどうか to be be_empty : オブジェクトが空であるか be (>|<|>=|<=) : オブジェクトに対しての比較 be_nil : オブジェクトがnilかどうか to include : 配列内にデータがあるか 15
  16. 16. R S p e c 拡 張 16
  17. 17. R S p e c と 組 み 合 わ せ る と 便 利 rspec-rails Selenium Poltergeist Capybara 17
  18. 18. R S p e c - R a i l s controller type => :controller get/post/put/delete アクション名, パラメータ request type => :request get/post/put/delete URL, パラメータ view type => :view renderでviewレンダリング, renderedでレンダリングしたview取得 assert_select エレメント: html属性値に対するアサーション 18
  19. 19. F a c t o r y G i r l の 概 要 19
  20. 20. F a c t o r y G i r l に つ い て オブジェクトから定義したデータを生成してくれる テストデータ投入に使われる ソースコードでテストデータを定義する 20
  21. 21. F a c t o r y G i r l の 定 義 21
  22. 22. ス ト ラ テ ジ ー create : テストデータを作成する build : テストクラスのValidationを行った後のインスタン スを生成して返す stub : Validationも行わず、インスタンス生成のみ _list : 一括に上記のストラテジーを実行する 22
  23. 23. D S L trait : 複数の属性をグループ化し、factoryに適用出来る transient : 一時的な変数、attributeを定義できる。trait内に ネストすることも可能 sequences : 連番を生成 callbacks : before, after before(:create), before(:stub), before(:build) after(:create), after(:stub), after(:build) 23
  24. 24. 24
  25. 25. 参 考 文 献 25
  26. 26. 参 考 文 献 使えるRSpec入門・その1 http://qiita.com/jnchito/items/42193d066bd61c740612 rspecガイドライン http://betterspecs.org/jp/ RSpecの(describe/context/example/it)の使い分け http://qiita.com/uchiko/items/d34c5d1298934252f58f MinitestとRspec、FixturesとFictoryGirlの比較 http://blog.jnito.com/entry/2015/05/06/074510 26

×