Translate

2015/10/03

Rubyでテスト入門、RSpec

チュートリアル的なもの。

ガイドライン:

describe 'テスト対象' do
  context '状態' do
    describe 'テスト対象メソッド' do
      context '与える入力' do
        it '期待する出力'
      end
    end
  end
end

テストを始める

インストール完了したら、テスト実行するまではこんな感じ。

$ rspec --init
  create   spec/spec_helper.rb
  create   .rspec

テストファイルを作成する。

spec/lib/dog_spec.rb

  /lib/dog.rbのテスト


テストを実行。
$ rspec spec/lib/dog_spec.rb

おまけ、specify

specifyとはなんぞや? it と同じでこちらが最近の記法みたいでした。

it メソッド

it メソッドは、エクスペクテーションを説明する文字列と、エクスペクテーショ ンを記述したブロックを引数に取ります。エクスペクテーションについてはこ の後で説明します。
array_spec.rb の例でいえば:
describe Array, "when empty" do
  ...
  it "should be empty" do
    @empty_array.should be_empty
  end
  ...
end
「it "should be empty" do...end」の部分が 1 つの example です。エクスペクテー ションを説明する文字列は、"should ..."で始まる英語であることが期待され ています。これは、Ruby コードを見たプログラマに「it should be empty」と 読んでもらうためです。これが「it」などという人を食ったようなメソッド名を採用している理由です。
ちなみに、この「it」が指している先は、describe の引数に書かれた説明です。 上の例では、空の Array インスタンスが it の指しているものです。ちなみに、 「it」メソッドはかつては「specify」というもっと穏当な名前でした。
もちろん、「RSpec 開発チームの思惑には絶対服従!」というわけではありません。ですから、
it "#empty? は true であること" do...
と日本語で書いても RSpec を実行する上では問題ありません。「日本語で書い たら "it" が意味不明でどうしても気持ち悪い」と思われる方は、 互換性のために残されている旧来の API を使うこともできます。
specify "#empty? は true であること" do ...
この連載では割り切って "it" を使うことにします。

0 件のコメント:

コメントを投稿