写点什么

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

  • 2009-05-18
  • 本文字数:801 字

    阅读完需:约 3 分钟

许多方法都可以开发、测试和集成 Rails 应用程序:例如使用基础的 Test:Unit ZenTest 进行测试驱动开发,利用 RSpec Shoulda Cucumber 进行行为驱动开发。当然也可以编写自定义的 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)<wbr></wbr>.greater_than(18).only_integer }
2) it { should validate_numericality_of(:age, :greater_than => 18, :only_integer => true) }
3) should_validate_numericality_<wbr></wbr>of :age, :greater_than => 18, :only_integer => true
4) should_validate_numericality_<wbr></wbr>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

2009-05-18 12:071380
用户头像

发布了 109 篇内容, 共 45.9 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

6.2分布式关系数据库(下)

张荣召

技术选型(二)

wing

极客大学架构师训练营

week-6-part1 CAP 原理

陈龙

第六周总结

orchid9

week2-作业一

未来已来

11/1-第二周-总结

张冬冬

心得

简述CAP原理

orchid9

架构师训练营第六周作业

文智

极客大学架构师训练营

架构师训练营第 6 周课后练习

叶纪想

极客大学架构师训练营

第六周学习心得

熊桂平

极客大学架构师训练营

第6周作业

paul

架構師訓練營第 1 期 - 第 06 周作業

Panda

架構師訓練營第 1 期

第二周课后练习

刘洋

极客大学架构师训练营

Dynatrace抓取系统中的任何方法Method的参数值

东风微鸣

APM Dynatrace

架构师训练营1期-week06-作业

lucian

极客大学架构师训练营

架构师训练营 1 期 - week06 - 总结

lucian

极客大学架构师训练营

6.4Zookeeper与分布一致性架构

张荣召

架构设计-学习总结笔记

Xuenqlve

2 期架构师训练营 - 框架设计

云飞扬

极客大学架构师训练营

架构师训练营第六周学习总结

文智

极客大学架构师训练营

在 iOS App 中显示 Build 时间和 git 分支名、commit 哈希

疯清扬

ios 编译时间 git version build time 编译日期

架构师训练营2期第二周总结

架构第六周总结

Geek_Gu

6.5搜索引擎的基本架构

张荣召

非HTTP应用或批处理应用如何进行全链路监控

东风微鸣

全链路监控 非HTTP应用

架构师训练营第六周作业

脸不大

ARTS打卡 第22周

引花眠

微服务 ARTS 打卡计划 springboot

2 期架构师训练营 - 第二周学习总结

云飞扬

极客大学架构师训练营

week-6-part2 学习总结

陈龙

架构二期第二周总结

supersky6

6.3CAP原理与NoSQL数据库架构

张荣召

使用Remarkable进行Rails行为驱动开发,提供宏与国际化支持_Ruby_Sebastien Auvray_InfoQ精选文章