Rubyとテストは切り離せない

Rubyとテストの関係は、以下のように記述できます(イメージをつかむため厳密ではない表現をしています)。

書いたとおりに決まった動きをする「硬い」言語とは異なり、Rubyはプログラマに大きな自由を与え、実行時の柔軟な処理を可能とする言語仕様/哲学を持ちます。その副作用として「動くように書いた」コードだけでは実装の正しさを保証できず、部分的に「実行して確認する」必要があります。これがテストです。

本記事はプログラムの「テスト」と呼ばれる中でも、小さな機能単位のみを対象とする「単体テスト(Unit Test)」を主なテーマとしています。

概してRubyプログラマは前述のような言語の特性に自覚的であり、Rubyコミュニティには「テストは必須、あるのが普通」という文化が根付いています。

今回の記事では広く使われているRubyのテストライブラリであるRSpecを取り上げ、インストール方法と基本的な使い方を紹介します。

RSpecのインストールとセットアップ

rspec はRuby界隈でよく使われているテストライブラリで、クセはありますが、かなり自然言語(英語)に近い読み心地(?)のDSLを提供するのが特徴です。

rspecはgemとして提供されています。機能ごとにいくつかの子gemに分離されていますが、今回は標準的なセットが含まれた「rspec」gemを使います。

rspec-support, rspec-core, rspec-expectations, rspec-mocks がインストールされます。

ひとつ注意点として、新旧文法の違いがあります。 RSpecは長く使われて来たバージョン2系から3系に上がる際に大きな文法の変更がありました。そのため、ウェブで見つかる記事の少なくない割合は廃止されたバージョン2系の例で書かれており、情報収集の際には注意が必要です。本記事では執筆時(2015年1月27日)における最新バージョン(3.1.0)の文法に基づいた例を示します。

次のページでは、RSpecの基本的な使い方と文法を紹介します。