トップ «前の日記(2008/01/20 (日) ) 最新 次の日記(2008/01/22 (火) )» 編集 RSS feed

HsbtDiary


2008/01/21 (月) [長年日記]

[rspec][ruby][contrib][tDiary]tDiary-contrib で学ぶ rspec

数日前に角谷さんが commit してくれた tDiary-contrib の spec ファイルを拡張したり何だりして自作 plugin の spec ファイルを作ってみた。

rspec のインストール

何も考えずに

sudo gem install rspec

を実行。

角谷さんの spec ファイルを実行してみる

platform/tdiary/ に移動してから

spec -c spec/openid_spec.rb

で結果を得ることができる。最初この辺の慣習を知らずに spec ディレクトリ以下に移動してから実行してたのではまった。

自分で spec ファイルを作ってみる

openid_spec.rb をインスパイヤしながらヘッダに文字列を埋め込むだけという同じタイプの account_ad.rb の spec ファイルを作ってみた。→ /platform/tdiary/spec/account_ad_spec.rb

spec_helper.rb の改造

account_ad_spec.rb を実行すると、@conf.base_url がないと怒られる。どうやら、spec_helper.rb の @conf がこの手のメソッド呼び出しに対応していないらしい。とりあえず、account_ad.rb のテストに必要な部分だけ tdiary.rb からコピって対処。

spec の実行

ここまできてようやく

% spec -c spec/account_ad_spec.rb
..

Finished in 0.015505 seconds

2 examples, 0 failures

となった。

とりあえずは単純な文字列埋め込みタイプから spec ファイルを書きつつ、今回のように spec_helper.rb を拡張していくのがよさげかなー。ある程度まとまってきたら、tDiary-core に持って行くのも良いかもしれない。

[tDiary][contrib][rake][rspec]tDiary-contrib の Rakefile に spec タスクを追加した

こんな感じのを追加した。

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 をある程度知ってる人ならすぐ使えそうでいいね。