RailsとiOSのプロジェクトでAPIのモック、スタブをやめたいのでgem書いた

個人でなんか作るときとかに、だいたいRailsでAPIを書いて、iOSでクライアント作ることをよくしてたんです。

その時のiOSのテストではだいたいmockやstubを使っていることが多かったのですが、

という手順で、RailsでAPIを変更するたびに、手作業でMockやStubの返却値を修正していました。

だいたいこういうのって修正漏れがあって、落ちるはずのテストが通ってしまい、実際のAPIでエラーになるまで気づかないという、何のためにテストやってんの感が出てきて、最後にはテストを書かなくなるというのが往々にあるというか、自分のパターンでした。( APIなんだからそんな頻繁に変えるのが間違えているというのもあるかもだけど、個人で適当に作るものなので。。)

じゃあ実際にRailsのサーバ上げて、そこに対してAPIのテスト走らそうと思っても、破壊的な操作(Post,Put,Delete)を繰り返すと、また、テストが通らなくなったり、テストの順番変えるとテスト落ちたりつらすぎる感じ。

なので、APIアクセスの前にfixture食わせて、最後にrollbackで元に戻れせば少しはハッピーになれるかなと思って、そういう奴作りました。

amacou/rails_sandbox_server

sandbox/setupにpostしてfixture名渡すと読み込む

curl -X POST http://127.0.0.1:3000/sandbox/setup -d "fixture=articles"

sandbox/rollbackにdeleteすると全部rollbackする

curl -X GET http://127.0.0.1:3000/sandbox/rollback

これだけしかできないけどmockとstubのメンテ量は減るはず。