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するためだけの用途でも使えそう。