昨今TDDなどもあり、 テストコードについての話題がありますが、
個人的にテストコードが書ける人 = 初級者を脱した中級者 のようなイメージを持っています。
打たれる前に打てというような 考えもあるかと思いますが、 打たれても大丈夫なように体を作ることも大事です。
ちょっと何を言いたいのかわかりませんが 野球もサッカーも守りが強いという土台の上でこそ 攻撃力や創造性が発揮されるということです。
ということで脱線しましたが、 簡単な導入から行きましょう。
まずはアプリはこんな感じです。

はい、簡単な足し算をするアプリです。
viewのコードは以下です。
bootstarap で多少装飾していますが、 今回はここで呼んでいる addというメソッドのテストを書いてみます。
まずはインストールから 方法はここにあります。 https://github.com/rspec/rspec-rails
ということで
gem 'rspec-rails', '~> 3.5'
を追記してからbundle installします。
インストールできたら初期化
rails generate rspec:install
テストの実行方法は以下です。
# モジュール単位
bundle exec rspec spec/[ models / helpers / controller / .. ]
# ファイル単位
bundle exec rspec spec/helpers/homes_helper_rspec.rb
テストコードは以下の通り
require 'rails_helper'
include(HomesHelper)
RSpec.describe HomesHelper, type: :helper do
# pending "add some examples to (or delete) #{__FILE__}"
describe "GET /homes" do
it "about add method" do
# normal case
sum = HomesHelper.add( 1, 2)
expect(sum).to eq(3)
# either nil
sum = HomesHelper.add( nil, 2)
expect(sum).to eq(0)
# either nil
sum = HomesHelper.add( 1, nil)
expect(sum).to eq(0)
# both nil
sum = HomesHelper.add( nil, nil)
expect(sum).to eq(0)
end
end
end
it から end までがテストの一単位ですね。 実行してみます。
$ rspec spec/helpers
Please report a bug if this causes problems.
.
Finished in 0.02032 seconds (files took 4.38 seconds to load)
1 example, 0 failures
はい成功です。 今回は一発目で成功しましたが、 失敗すると
$ rspec spec/helpers
WARN: Unresolved specs during Gem::Specification.reset:
diff-lcs (< 2.0, >= 1.2.0)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
.
Finished in 0.02032 seconds (files took 4.38 seconds to load)
1 example, 0 failures
こういう感じになります。 今回はシンプルなパターンだったので、 もう少し複雑なパターンを試してみたいです。
試したらまたこのブログで紹介します。
rspecは他にもcontrollerやmodel,routingもテストできます。
はい!今回はここまで。