Rubyのテストコード自動生成!レガシーコードをrspec-kickstarterで切り崩す

  • このエントリーをはてなブックマークに追加

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のリズムが考えられる。

  1. メソッドを定義
  2. メソッドに対応するスケルトンを生成し、テストを実装
  3. テスト失敗
  4. メソッド実装
  5. テスト成功

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

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

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

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

スポンサードリンク

サブコンテンツ

このページの先頭へ