1. HOME
  2. ブログ
  3. IT技術
  4. Ruby のテストフレームワーク minitestとRSpec
Ruby のテストフレームワーク minitestとRSpec

Ruby のテストフレームワーク minitestとRSpec

はじめに

今回は私がRubyを学習する上で、テストフレームワークについて調べて、実践してみた内容をまとめてみようと思います。

Rubyのテストフレームワークにも様々種類がありますが、今回は minitest と RSpec について実際にコードを動かしてみます。

Rubyのテストフレームワーク

minitestとは

minitestとは、Rubyの標準のテストフレームワークです。Rubyをインストールすれば一緒にインストールされています。特に追加でセットアップは必要ありません。

RSpecとは

RSpecとは、Ruby on Railsの開発でよく使われているテストフレームワークです。このフレームワークを使うには追加でgemのインストールが必要になっています。

環境構築

Ruby インストール(minitestインストール)

Rubyのインストールにはanyenv+rbenvを使ってインストールしようと思います。

anyenvとは各プログラミング言語に作られている、言語のバージョンを管理するためのツール(Rubyであればrbenv、Nodeであればnodenvなど)がまとめられたオールインワンのパッケージ管理ツールです。

公式ページにインストール方法があるのでそれを使ってインストールしていきます。(Macを使っているので今回紹介するのはHomebrewでのインストールです。)

以下のコマンドを実行していきます。

anyenv initを実行するとbash_profileに追加するように指示があるので、追加します。(各シェル環境によって異なる部分だと思います。)

ここまで設定したら、ターミナルを開き直します。

このような表示が出ていれば、指示に従い、anyenv install --initを実行して、再度ターミナルを開き直します。

ここまでくれば、anyenvのインストール完了です。

次にrbenvをインストールします。

ターミナルを開き直して、rbenvでrubyをインストールします。(今回インストールするバージョンは3.1.1です)

今回作成するサンプルコードを実行するディレクトリを作ります。

ディレクトリ移動後に以下のコマンドを実行するとrubyが対象のバージョンに切り替わっていることを確認できます。

サンプルテストコード

今回はrubyの大文字小文字変換をするupcase, downcase, capitalizeを対象としたテストコードを書いてみようと思います。

minitest

先程作ったディレクトリruby_testで以下のコマンドを実行します。

作成したファイルsample_minitest_test.rbで以下のコードを記載してください

1行目でminitestを読み込み、3行目でminitestのクラスを作成し、各メソッドを利用したテストを記載しています。

テストコマンドを実行すると以下のように結果が表示されます。

failuresが0, errorsが0ですべてのテストケースが成功しています。

sample_minitest_test.rbの5行目を以下のように変更して、実行するとテストが失敗することが確認できます。

このように、何行目で、どういう内容でテストが失敗しているかを表示してくれます。

今回は予期する値になっていないという内容でテストが失敗しています。

RSpec

次にRSpecを使ったテストを行います。別途インストールが必要なので、bundlerを使ってインストールしていきます。

minitestと同じくディレクトリruby_testで以下のコマンドを実行します。

作成したGemfileに以下の内容を記載します。

次のコマンドでインストールします。

ここまで実行すると.rspecspec/spec_helper.rbのファイルが作成されて、RSpecが実行可能になっています。

次にRSpecのテストコードを書いていきます。以下のコマンドでファイル作成します。

sample_rspec_test.rbに以下の内容を記載します。

実行すると以下の結果になります。

failuresが0ということですべてのテストケースが成功しています。

次に3行目を以下のように変更して実行すると、失敗した実行結果が得られます。

このように失敗した箇所と理由を明示してくれます。

まとめ

Rubyのテストフレームワークである、minitestとRSpecについて調べて、実践してみました。

今回はrubyのメソッドを対象としたテストのみでしたが、今後は実際に自分がコードのテストやDatabaseを絡めたテストの書き方について調べていこうと思います。

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア