数日前に角谷さんが commit してくれた tDiary-contrib の spec ファイルを拡張したり何だりして自作 plugin の spec ファイルを作ってみた。
何も考えずに
sudo gem install rspec
を実行。
platform/tdiary/ に移動してから
spec -c spec/openid_spec.rb
で結果を得ることができる。最初この辺の慣習を知らずに spec ディレクトリ以下に移動してから実行してたのではまった。
openid_spec.rb をインスパイヤしながらヘッダに文字列を埋め込むだけという同じタイプの account_ad.rb の spec ファイルを作ってみた。→ /platform/tdiary/spec/account_ad_spec.rb
account_ad_spec.rb を実行すると、@conf.base_url がないと怒られる。どうやら、spec_helper.rb の @conf がこの手のメソッド呼び出しに対応していないらしい。とりあえず、account_ad.rb のテストに必要な部分だけ tdiary.rb からコピって対処。
ここまできてようやく
% spec -c spec/account_ad_spec.rb .. Finished in 0.015505 seconds 2 examples, 0 failures
となった。
とりあえずは単純な文字列埋め込みタイプから spec ファイルを書きつつ、今回のように spec_helper.rb を拡張していくのがよさげかなー。ある程度まとまってきたら、tDiary-core に持って行くのも良いかもしれない。
こんな感じのを追加した。
desc "Run all specs" task :spec do require 'rake' require 'spec/rake/spectask' Spec::Rake::SpecTask.new do |t| t.spec_files = FileList['spec/**/*_spec.rb'] t.spec_opts = ['--options', 'spec/spec.opts'] end end
rspec 入れてない環境ではもちろんこけるので default に入れるのは様子見。Rakefile 今まで書いたことないけど、Ruby をある程度知ってる人ならすぐ使えそうでいいね。