RSpec

【RSpec】RubyのみでRSpecを用いる方法について簡単にまとめてみた【Railsなし】

RSpec

 

今回はRailsを用いず、RubyのみでRSpecを用いる方法について解説したいと思います。RailsアプリケーションでRSpecを利用したことがある方は多いとは思いますが、Rubyのみのアプリケーションで実装したことがある方は意外と少ないのではないでしょうか。

準備

以下のように「rspec-test」フォルダ直下に「test.rb」というファイルを作成しました。この「test.rb」に書かれたコードをRSpecを用いてテストすると仮定します。

ファイル構成

セットアップ手順

RubyアプリケーションでRSpecを用いる際のセットアップをまとめると以下の手順になります。

  1. bundle initでGemfileを生成
  2. Gemfileに「gem “rspec”」を記述し、bundle install
  3. RSpec設定ファイルの生成
  4. spec_helper.rbの有効化

 

では実際にやっていきましょう。

まずは以下のコマンドを打ち込み、Gemfileを新たに生成しましょう。

% bundle init
Gemfileの生成

 

作成されたGemfileに以下の記述を追記し、bundle installを実行します。

gem "rspec"
% bundle install

 

続いてRSpecの設定ファイルを生成しましょう。以下のコマンドを打ち込むことで「.rspec」と「spec/spec_helper.rb」の2ファイルが生成されます。

% bundle exec rspec --init
ファイル構成

 

先ほど生成した「spec/spec_helper.rb」に書かれてある「=begin」と「=end」を削除し、spec_helper.rbを有効化しましょう。

# 省略

# The settings below are suggested to provide a good initial experience
# with RSpec, but feel free to customize to your heart's content.
=begin ←削除
  # This allows you to limit a spec run to individual examples or groups

# 省略

  # Seed global randomization in this process using the `--seed` CLI option.
  # Setting this allows you to use `--seed` to deterministically reproduce
  # test failures related to randomization by passing the same `--seed` value
  # as the one that triggered the failure.
  Kernel.srand config.seed
=end ←削除
end
「=begin」は49行目前後、「=end」は99行目前後に記載されています。

 

ここまでの作業で、RubyアプリケーションでRSpecを用いるためのセットアップが完了しました。

テストの実行手順

では実際にテストを実行してみましょう。

当たり前と言えば当たり前のことですが、今回は1000の半分は500になることを確かめるテストを実装してみます。

まずは「test_spec.rb」をspecフォルダ直下、「test.rb」をlibフォルダ直下に配置しましょう。libフォルダはrspec-testフォルダ直下に新たに作成してください。

ファイル構成

 

「test.rb」に以下のコードを貼り付けます。

class Calculate
  def initialize(num)
    @num = num
  end

  def half_num
    @num / 2
  end
end

 

「spec/test_spec.rb」には以下のコードを貼り付けます。

require_relative '../lib/test'

RSpec.describe Calculate do
  it '1000の半分は500になる' do
    calculate = Calculate.new(1000)
    expect(calculate.half_num).to eq 500
  end
end
Ruby
【Ruby】requireとrequire_relativeの違いについて簡単にまとめてみたRubyにおける「requireメソッド」と「require_relativeメソッド」の違いについて解説しています。モジュールや外部ファイルの読み込みがうまくいかない場合は「require_relativeメソッド」を使用することで解決できることがあるので、ぜひ頭に入れておきましょう。...

 

ではこのテストファイルを実行してみましょう。テストの実行コマンドは「% bundle exec rspec」になります。

% bundle exec rspec

Randomized with seed 3794

Calculate
  1000の半分は500になる

Top 1 slowest examples (0.0018 seconds, 18.7% of total time):
  Calculate 1000の半分は500になる
    0.0018 seconds ./spec/test_spec.rb:4

Finished in 0.00962 seconds (files took 0.21502 seconds to load)
1 example, 0 failures

Randomized with seed 3794

 

上記のようにテストがパスすれば成功です。

まとめ

RubyアプリケーションでRSpecを用いるための手順を改めてまとめると、以下の順になります。

  • bundle initでGemfileを生成
  • Gemfileに「gem “rspec”」を記述し、bundle install
  • RSpec設定ファイルの生成
  • spec_helper.rbの有効化

参考

 

 

今回はRailsを用いず、RubyのみでRSpecを用いる方法について解説しました。RubyアプリケーションでRSpecをセットアップしたことがない方はぜひチャレンジしてみてください。