Merbのプラグインを作る場合、merb-gen plugin plugin-name でひな形が生成されますが、現状では生成されるspecがほとんど空っぽなので、 ちゃんとしたspecを書くための足場の作り方を紹介します。

まずは、spec/spec_helper.rb を以下のような感じに準備します (これはdm-has-versionsの例です)

   1  $:.push File.join(File.dirname(__FILE__), '..', 'lib')
   2  
   3  require 'rubygems'
   4  require 'merb-core'
   5  require 'dm-core'
   6  require "spec"
   7  require 'dm-has-versions/has/versions'
   8  require 'dm-aggregates'
   9  
  10  DataMapper::Model.append_extensions DataMapper::Has::Versions
  11  Merb.disable(:initfile)
  12  Merb.start_environment(
  13    :testing      => true,
  14    :adapter      => 'runner',
  15    :environment  => ENV['MERB_ENV'] || 'test',
  16    :merb_root    => File.dirname(__FILE__) / 'fixture',
  17    :log_file     => File.dirname(__FILE__) / "merb_test.log"
  18  )
  19  DataMapper.setup(:default, "sqlite3::memory:")
  20  
  21  Spec::Runner.configure do |config|
  22    config.include(Merb::Test::ViewHelper)
  23    config.include(Merb::Test::RouteHelper)
  24    config.include(Merb::Test::ControllerHelper)
  25  
  26    DataMapper.auto_migrate!
  27  end

この例では、DataMapperを使う事を前提としています。 "sqlite3::memory:" を指定することで、テストのための データベースファイルなどを用意する必要がないので楽です。

テストで利用されるクラス群は、spec/fixture 以下に、 通常のMerbアプリケーションと同様のディレクトリ階層で用意します。

   1  % tree spec/fixture [~/project/dm-has-versions:master]
   2  spec/fixture
   3  `-- app
   4      `-- models
   5          |-- comment.rb
   6          `-- story.rb

posted by Png genki on Fri 16 Jan 2009 at 13:35

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry1221
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ