BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Remarkableでのマクロ、I18n付きのRails BDD

Remarkableでのマクロ、I18n付きのRails BDD

原文(投稿日:2009/5/4)へのリンク

Railsアプリケーションを開発したり、テストしたり、統合する方法は多数ある。基本的なTest::Unit(リンク)やZenTest(リンク)があるTDDからRSpec(リンク)、Shoulda(リンク)またはCucumber(参考記事)があるBDDに至るまで多岐にわたる。また、カスタムRSpec matchersを記述することが可能である。

正しいツールを探したり、ベストプラクティスを見出すことは困難(リンク)だと言える。Remarkable(リンク)は、構文を統一したり、さらに特色を付け加えて、Rails BDDを痛みが伴わないものにしようとしている。

Remarkableはその独自のDSLを使用したフレームワークである。マクロおよび I18nサポートを提供することで、Remarkableは、RSpecを拡張する。オプション(:through, :source, :source_type, :class_name, :foreign_key, ...)付きのすべてのActiveRecord検証を網羅する、一連の徹底的なRSpec matcherが同梱されている。また、ActionController向けの一連のmatcherもある。

RSpecまたはShouldaに類似した構文のどちらか一方を使用することができる(プロジェクトWebサイトより)。

    1) it { should validate_numericality_of(:age).greater_than(18).only_integer }

    2) it { should validate_numericality_of(:age, :greater_than => 18, :only_integer => true) }


    3) should_validate_numericality_of :age, :greater_than => 18, :only_integer => true

    4) should_validate_numericality_of :age do |m|
         m.only_integer
         m.greater_than 18
         # Or: m.greater_than = 18

       end

最後に、容易にモデルスペックを記述することができる。

  describe Post do
    should_belong_to :user
    should_have_many :comments
    should_have_and_belong_to_many :tags


    should_validate_presence_of :body
    should_validate_presence_of :title
    should_validate_uniqueness_of :title, :allow_blank => true
  end

Remarkable 3.0.10は利用可能であり(リンク)、かなり盛んなプロジェクトである。次期リリースでは、ActionViewサポートのような、さらに多いRails matcherが期待される。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT