もふもふ技術部

gem開発時にrspecを使いたい


基本ライブラリなのでgem開発をしていると際にデバッグしづらいです。なのでrspecを使ってユニットテストと交互に実装していけば動作確認しながら開発できるので楽です。

というわけで、gem開発時にどうやってrspecを導入するかやってみました。

Ransible

Ansibleをラップしてrubyのコードから簡単に呼び出すためのgemを作っているので、それを例にやっていきます。

https://github.com/harada4atsushi/ransible

.gemspecにrspecを追加します。spec.add_development_dependencyはdevelopmentでのみの依存パッケージなので開発時のみインストールされます。

続いてRailsでもお馴染みですがspec_helper.rbを作成します。

spec/spec_helper.rb

ちなみにspec_helper.rbに何も記述しないとクラスが読み込まれていないためuninitialized constantエラーになります。

rspecコマンドを実行して結果がちゃんと返ってくればOK

ただこのままだと非常に読みづらいので、結果に色をつけます。rspec設定ファイルにオプションを記述するとデフォルトで有効になります。

.rspec

いろいろごにょごにょやりましたが、こんなことやらないでもgem開発時のオプションを指定するだけでこの辺の構造をよしなにやってくれます。

テストコード

参考までに実装とテストを載せておきます。

ransible.rb

ransible_spec.rb
ansibleを実際に実行しなくてもテストできるように、ansible実行部分をstubしてます。

全体の構成

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。