Red > Green > Refactor > Red

cycle is based on desire

ymlspec # techout

YAML ファイルから Rspec の書式へ擬似コンパイルする gem を作成

  • バグ有り
  • 一つのメソッドに責務を持たせすぎている
  • 挙動が追えない(ウルトラスパゲティ)

無責任承知だが修正しない。出直す。昔を振り返られるように置いておく

Rubygems.org には未登録。内容の詳しいことは github:mat5ukawa/ymlspec に書いてあるのでご参照を

内容を大まかに

{WORK_DIR}/tmp/ymlspecs/top_controller.spec.yml

describe:
  obj: TopController
  describe:
    obj: index
    context:
      obj: success redirection
    context:
      obj: failed redirection because internal server Error
  describe:
    obj: create
    context:
      obj: success POST
    context:
      obj: failed POST because internal server Error
    describe:
      obj: failcase
      context:
        obj: password is under 8
      context:
        obj: password is over 255
      context:
        obj: password format is invalid

{WORK_DIR}/spec/ymlspecs/top_controller_spec.rb

describe TopController do
  describe 'index' do
    context 'success redirection' do
    end
    context 'failed redirection because internal server Error' do
    end
  end
  describe 'create' do
    context 'success POST' do
    end
    context 'failed POST because internal server Error' do
    end
    describe 'failcase' do
      context 'password is under 8' do
      end
      context 'password is over 255' do
      end
      context 'password format is invalid' do
      end
    end
  end
end

に出来る

バグとは

describe の階層構造を正確に反映できていないこと

{WORK_DIR}/tmp/ymlspecs/post_model.spec.yml

describe:
  obj: Post
  describe:
    obj: myvalidation
    context:
      obj: success
    describe:
      obj: failcase
      context:
        obj: title string is under 8
      context:
        obj: title string is over 255
  describe:
    obj: foomethod
    context:
      obj: success
    describe:
      obj: failcase
      context:
        obj: input format is invalid
      context:
        obj: input is valid but data is not stored to DB

の上から2番目 describe の閉じ end が正確に対応していない

{WORK_DIR}/tmp/ymlspecs/post_model_spec.rb

describe Post do
  describe 'myvalidation' do
    context 'success' do
    end
    describe 'failcase' do
      context 'title string is under 8' do
      end
      context 'title string is over 255' do
      end
    end
 # end がここにあるべきが、無い(1)
    describe 'foomethod' do
      context 'success' do
      end
      describe 'failcase' do
        context 'input format is invalid' do
        end
        context 'input is valid but data is not stored to DB' do
        end
      end
    end
  end # (1) のend がここに来ている
end

色々出直す


レポジトリは以下

github:mat5ukawa/ymlspec