写点什么

使用 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:071014
用户头像

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

关注

评论

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

【LeetCode】删除链表的倒数第 N 个结点Java题解

Albert

算法 LeetCode 10月月更

设计千万级学生管理系统的考试试卷存储方案

Rabbit

OpenCV学习(二):环境搭建

轻口味

OpenCV图像处理 10月月更

产品经理如何采集需求?

石云升

产品经理 需求分析 10月月更

架构训练营 模块九

小卷儿

模块九作业

老实人Honey

Pandas高级教程之:时间处理

程序那些事

Python 大数据 数据分析 pandas 程序那些事

Android使用adb工具及root权限完成手机抓包

杨清强

adb

模块九 电商秒杀系统设计

小牧ah

架构实战营

11. python入门复习教程之命名空间与作用域,再谈异常,标准库,持久化与序列化

梦想橡皮擦

10月月更

架构实战营 - 模块九作业

思梦乐

架构实战营模块九作业-毕业设计

子豪sirius

架构实战营

linux安装XtraBackup8

入门小站

Linux

极客时间架构实战营作业五

jjn0703

架构实战营

架构实战训练营模块 4 作业

Sonichen

【Flutter 专题】32 图解自定义 View 之 Paint

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

梦幻西游H5游戏超详细图文架设教程

echeverra

H5游戏

Ember Data 之记录操作:创建、更新和删除

devpoint

store ember.js 10月月更

在线HTML实体转字符串工具

入门小站

工具

今天的你幸福吗?

卢卡多多

幸福 10月月更

架构实战营1期模块9作业——毕业设计

tt

架构实战营

模块九作业

秀聪

架构实战营

多图详解万星 Restful 框架原理与实现

万俊峰Kevin

微服务 RESTful Web框架 go-zero Go 语言

【Vuex 源码学习】第十篇 - Vuex 命名空间的实现

Brave

源码 vuex 10月月更

Facebook宕机背后,我们该如何及时发现DNS问题

阿里巴巴云原生

阿里云 产品 云原生

013 云原生之容器技术

穿过生命散发芬芳

云原生 10月月更

前端监控:JS监控SDK手摸手教学-原理篇(已开源)

浅端攻城狮

大前端 监控 js sdk

CSS架构之setting层

Augus

CSS 10月月更

Prometheus 数据模型

耳东@Erdong

Prometheus 10月月更

模块9毕业设计

柱林

中秋图关系构建

6979阿强

图算法 GraphScope 中秋节

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