BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用Remarkable进行Rails行为驱动开发,提供宏与国际化支持

| 作者 Sebastien Auvray 关注 0 他的粉丝 ,译者 张逸 关注 12 他的粉丝 发布于 2009年5月19日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

许多方法都可以开发、测试和集成Rails应用程序:例如使用基础的Test:UnitZenTest进行测试驱动开发,利用RSpecShouldaCucumber进行行为驱动开发。当然也可以编写自定义的RSpec匹配器。

然而,我们却很难找到合适的工具,并挖掘它们的最佳实践。Remarkable试图将这些工具的语法统一起来,并添加更多特性,从而避免Rails行为驱动开发的痛苦。

Remarkable框架使用了自己的DSL(领域特定语言)。它通过提供宏与国际化的支持对RSpec进行了扩展。它提供了一个详尽的RSpec匹配器集合,能够根据各种选项转换所有的ActiveRecord验证。这些选项包括:through, :source, :source_type, :class_name, :foreign_key等。它同时还为ActionController提供了一个匹配器集合。

我们可以使用类似RSpec或Shoulda的语法(来源于Remarkable项目网站):

    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版本,该项目还在持续更新中;下一个版本将提供更多的Rails匹配器,例如对ActionView的支持。

查看英文原文:Rails BDD with Macros, I18n,... with Remarkable

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT