RSpec絶賛勉強中! t-wadaさんの記事を参考にして写経してる。

RSpecについての情報を探してネット上を徘徊していたら、 rspec-kickstarterというおもしろそうなツールを発見したので試す。

rspec-kickstarterとは

githubのREADMEによると、 既存コードからRSpecのスケルトンコードを自動生成するツールのようだ。

インストール

gem install rspec-kickstarter

つかってみる

写経用教材をrspec-kickstarterにかけてみると・・・

require 'spec_helper'
require 'message_filter'

describe MessageFilter do

  # TODO auto-generated
  describe '#new' do
    it 'works' do
      word = double('word')
      result = MessageFilter.new(word)
      expect(result).not_to be_nil
    end
  end

  # TODO auto-generated
  describe '#detect?' do
    it 'works' do
      word = double('word')
      message_filter = MessageFilter.new(word)
      text = double('text')
      result = message_filter.detect?(text)
      expect(result).not_to be_nil
    end
  end

end

あっという間に自動生成。自動生成なのでテストがDRYではあるが、それでも素晴らしい。 いきなり最終回だ。

テストのリズム

オプション -f をつけると、 既存のspecコードに足りないメソッドのサンプルを追加してくれる。

このオプションをつかうと、以下のようなTDDのリズムが考えられる。

  • メソッドを定義
  • メソッドに対応するスケルトンを生成し、テストを実装
  • テスト失敗
  • メソッド実装
  • テスト成功

普通ならば、このあとリファクタリングをする。

まだ、お試しなので、もう少し使ってみて有用性を見極めてみる。

一からスクラッチを書くコードよりも、レガシーコードにたいして絶大な効果がありそう。

また、テストファイルをとりあえず生成することができるので、初めの一歩をkickするためだけの用途でも使えそう。