2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

如何从ERP将Material的Batch信息下载到CRM

汪子熙

CRM SAP ERP abap

金融科技如何在产业互联网蓝海中扬帆远航?大数据、区块链与物联网应用被看好

CECBC

如何证明CRM WebClient UI上的应用是有状态(Stateful)的

汪子熙

CRM SAP abap WebClient UI

模块4作业

梦寐凯旋

架构实战营

如何快速的学习一门新的编程语言?

架构精进之路

学习 5月日更

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

俞嘉彬

如何使用代码获得一个function module的Where Used List

汪子熙

CRM SAP abap SAPGUI

中间件事务码R3AC1里Block Size的含义

汪子熙

中间件 CRM SAP abap

CRM product UI里assignment block的显示隐藏逻辑

汪子熙

CRM SAP abap

如何从ERP下载Sales BOM到CRM

汪子熙

CRM SAP ERP abap

如何检查某个用户是否具有某个权限对象上定义的某种权限

汪子熙

CRM ERP abap Authorization Authentication

如何用ABAP代码读取CDS view association的数据

汪子熙

CDS SAP abap CDS view

在浏览器里使用SAPGUI里的SE80

汪子熙

JavaScript SAP abap Fiori SAP UI5

ABAP和Java里关于DEFAULT(默认)机制的一些语言特性

汪子熙

SAP abap Netweaver SAPGUI

CRM和ERP的Sales Organization的映射关系

汪子熙

中间件 CRM SAP ERP

为什么使用中间件下载时总是收到警告消息Object is in status Wait

汪子熙

中间件 CRM SAP ERP

架构训练营-模块四作业

冬天的树

SAP S4CRM (SAP Customer Management for S/4HANA) 1.0 介绍

汪子熙

CRM SAP abap S/4HANA

数字货币兴起背后:全球货币超发 主权信用贬值

CECBC

架构师训练营 作业四

开拓纪

CRM数据库表COM_TA_R3_ID的数据来源

汪子熙

中间件 CRM SAP abap

ABAP OPEN SQL里OPEN CURSOR和SELECT的比较

汪子熙

CRM SAP abap ST05 OPENSQL

CRM订单状态的Open, In process和Completed这些条目是从哪里来的

汪子熙

CRM SAP ERP abap

如何在Chrome development tool里查看C4C前台发送的未经 GZIP 压缩之前的请求细节

汪子熙

chrome SAP C4C Chrome开发者工具

One Order行项目里Item Category是怎么计算出来的

汪子熙

CRM SAP abap ONE-ORDER

Mybatis获取自增长id

风翱

mybatis 5月日更

CRM中间件里的发布-订阅者模式

汪子熙

CRM SAP ERP abap

观察者模式在One Order回调函数中的应用

汪子熙

CRM SAP abap

高性能 JavaScriptの六 -- 老生常谈Ajax

空城机

JavaScript ajax 大前端 5月日更

面试问题 - 只用位操作在ABAP里实现a+b

汪子熙

面试 SAP abap

利用CRM中间件Middleware从ERP下载Customer Material的常见错误

汪子熙

中间件 CRM SAP ERP

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