RSpecの文法
まず公式ページから最初のサンプルを引用します。
基本的にRSpecのコードはdescribe > it
の階層構造となっており、これにaliasや分岐構造が生えているイメージです。これを自然言語風に直すと
"Describe an order."
"It sums the prices of its line items."
と、テスト対象コードの実行結果を文章で表しているかのように読み下すことができます。
実行されるテストケースは、 itブロックの中で「予期(expect)する実行結果」と「実際の(actual)実行結果」に対して expect(<target>).to <matcher> <actual>
と書きます。
matcher
上述のmatcherについて、少し補足説明をします。expect(...).to
あるいは expect(...).not_to
のあとには様々なmatcherが利用可能です。
Built in matchers - RSpec Expectations - RSpec - Relish
上記サイトに詳しいですが、代表的なものをいくつか取り出すと
- expect(actual).to be_truthy
- expect(actual).to be_falsey
- expect(actual).to be_nil
- expect(actual).to be_empty
- expect(actual).to be < 1000
- expect(actual).to eq 1000
- expect(actual).to be > 1000
- expect(actual).to be_a(String)
- expect(actual).to raise_error
- expect(actual).to include(1,2,3)
などがあります。過去バージョンで使われていたbe_true
およびbe_false
はそれぞれbe_truthy
、be_falsey
に置き換えられていることに注意してください。
他に、expectにブロックを渡して「ブロックの実行が何を変えるか」というchange
マッチャーもあります。
次のページではRSpecを実行する方法を解説します。