10 Jun 2012

このRSpecのスライドがすばらしい

Kerry BuckleyさんのRSpecのスライドが素晴らしい。さらっと読み通しておもしろいなと思ったところをノートしてみました。

なお、console でRSpecを使いたいときはSpec::Matchersをincludeすればよいです。
require 'rspec'
include Spec::Matchers

- 表紙
このスライドはSplippyというやつでできている。Escを押すとページのリストが出てかっこいい。

- Context
contextはdescribeのエイリアス

- Formatters
フォーマッタ: docは試験内容がdocument化されて読みやすい。

- Formatters
フォーマッタ: fuubarでプログレスバーをパーセンテイジ表示できる

- Formatters
フォーマッタは複数指定できる

- Profiling
プロファイルで時間のかかってる試験を発見

- Pending specs
itを実装しないとペンディングになる

- Running one spec
行を指定して一つのスペックを実施

- Built-in matchers
equalのmatcherはいろいろある。けど区別できるようにしとく必要ありそう

- Another digression
カスタムメッセージを指定してして後日スペックが通らなかったときに何がダメかわかりやすいメッセージを指定できる

- Back to built-in matchers
Matcherは基本的に既に用意されているbuilt-in matchersを使う。

- Custom matchers
 Custom Matcherはこんな感じで簡単に書けるようになってる

- Implicit subject
当然だけどsubject {} だけじゃなくdescribe :subject {}もそのscopeでsubject(主語)になる

だから以下の二つは等価
describe Array do
  it 'should respond to :each_with_index' do
    should respond_to :each_with_index
  end
end

describe 'An array' do
  subject { Array }
  it 'should respond to :each_with_index' do
    should respond_to :each_with_index
  end
end

- Implicit subject
its "uniq.size"と書くとevalしてくれる

- Explicit subject
subject {} で定義した変数へはsubjectでアクセスできる。

itsが廃止予定なので便利かも its "uniq.size" => subject.uniq.size

- Shoulda matchers
Shoulda MatchersがほとんどのRails Matchersを提供してくれてる

- Rails controllers
Anonymous controllerが使える。例えばあるアクションで異常系の処理のSpecを書きたいときなどに便利


- Learning more
残りは本家で
RSpec
RSpec Rails


.