そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

Rails/Ruby - テストカバレッジを調べる simplecov

自分の書いたテストが、全体コードの何割を占めているかを示す指標をテストカバレッジといいます。数値化されるのでテストの妥当性の検証に役立ちます。

今回はそのカバレッジを調べるRubyライブラリ simplecov を調べてみました。

 

 

インストール

gemパッケージですので次の通りインストールします。

$ gem install simplecov

rails で使う場合は、Gemfile に次のように追加してbundle します。

gem 'simplecov', :require=>false, :group=>true

テストで計測の時に require するのでここでは読み込まないようします

使い方

ヘルパメソッドに追加(初回のみ)

test/test_helper.rb (RSpecの場合は spec/spec_helper)の一番最初に次の行を追加しまう

require 'simplecov'
SimpleCov.start
テストを作成し実行する

今回は、Rails で以下のポストモデルのテストを作成します

app/models/post.rb

class Post < ActiveRecord::Base
  validates_presence_of :body
  validates_length_of :body, minimum:1, maximum:140
end

spec/models/post_spec.rb

require 'spec_helper'

describe Post do
  it "post create" do
      expect(Post.new(body:"title")).to have(0).errors_on(:body)
  end
  it "[error]post create" do
      expect(Post.new(body:"")).to have(2).errors_on(:body)
  end
  it "[error]post create" do
      expect(Post.new(body:"too large str"*15)).to have(1).errors_on(:body)
  end
end

テスト実行

$ bundle exec rspec spec/models/post_spec.rb
カバレッジを確認する

coverage/index.html

が出力されるので中身を確認します。

f:id:babiy3104:20130906121931p:plain

 

 

Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術

Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術