【Ruby】RSpecに触れてみる

スポンサードリンク

こんにちは、しきゆらです。

今回は、Ruby用のテストフレームワークの一つであるRSpecに触れてみたのでメモしておきます。

 

なお、RSpecに関する書籍等もあるので、そちらも読むと良いかもしれません。

少し古いですが、日本語の本。

 

新し目ですが、英語の本(ほしい)。

ほしい本リストに追加しておこう・・・。

 

さて、本当に基本的なところを触っていこうと思います。

スポンサードリンク


 

環境構築

RSpecはgemとして配布されています。

 

もしくは、bundlerを使う場合は

 

使うための準備

インストールが終わったら、使うための準備をしておきます。

 

出来るのは、「spec/」と「.rspec」の2つ。

「spec/」には、テストのスクリプトを置いておくようです。

「.rspec」には、rspecの実行時オプションを書いておくと、毎回タイプしなくても良くなります。

-fdをつけると、テストの結果が見やすいのでつけておきます。

 

スクリプトの配置場所

「spec/」にはテストのスクリプトを置いておきますが、テストしたいスクリプトはどこに置きましょう。

どうやら、「spec/」と同じ階層に「lib/」というディレクトリを作り、ここに入れていくようです。

 

ファイルの階層をまとめておくと以下のような感じ。

 

 

使っていく

基本的には、以下のような形で書いていきます。

「’テストの名前’」は自由につけることが出来ます。

テストの意味とか、何をテストするのかとか書いておくと良いかと思います。

 

「example」は、テストしたい例をいくつか書いていく部分です。

example1つでテスト1つという感じ。

 

その中にある「expect()」は、テストしたいメソッドなどを渡します。

.to eq(3)は、expectに渡したものの期待する結果を渡します。

 

 

テストしてみる

例えば、テストしたいプログラムが以下の様な場合。

 

RSpec側のスクリプトから上記のファイルを読み込んであげましょう。

テストの名前などは変えておきました。

ファイル名は、テストしたいものの名前_specとするのが慣例らしいです。

ということで、保存。

以下のように配置。

 

テストを実行する時は、特に何もしなくてもよくて、以下のコマンド一発です。

 

こうすると、specとつくファイルをごっそり実行して結果を返してくれます。

また、「rspec calc_spec.rb」とすると特定のテストのみ実行することも出来ます。

 

結果は以下の通り。

緑色で表示されれば、テストは通っています。

やったね!

一方で、エラーがあれば赤字で出ます。

 

 

まっちゃー

さて、上記の例では eqを使っています。

これ以外にも、期待する結果を指定する方法があります。

それが「matcher」と言うもの。

以下のサイトに、リストが有ります。

Built in matchers – Relish

 

どんなもnがあるかというと、

  • .to eq(hoge): hogeと等しいかの判定
  • .not_to eq(hoge): hogeでないかを判定
  • .to be true: trueかを判定
  • .to be > 10 : 10より大きいかの判定
  • .to be_between(1,10) : 1〜10の間にあるか

などなど。

 

これらを使って、実行結果が期待したものかをテストしながら作っていきます。

 

少し触れてみて、全て緑になると楽しくなってきますね。

RSpecはBDDという形式(?)で進めていくようなので

期待する処理結果から考えて作っていくようにしていこう、と思った次第です。

 

 

さて、今回はここまで。

おわり

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。