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が期待される。