写点什么

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

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

关注

评论

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

什么是Scrum?Scrum的核心要点和精髓

laofo

Scrum 研发效能 敏捷研发

跟着卷卷龙一起学Camera--DNG格式

卷卷龙

ISP camera 10月月更

「Hive进阶篇」四、HQL 高级巧用

大数据阶梯之路

大数据 hive 面试

「前端组件开发」越折腾越有趣,封装了一个表单组件

叶一一

前端 React 组件开发 10月月更

Spring之核心容器

楠羽

笔记 SP【ring 10月月更

List的基础数据的处理

卢卡多多

List 10月月更

SAP | 认识 abap 工作台(下)

暮春零贰

SAP abap 10月月更

VS2019 添加bits/stdc++.h万能头文件库

Yeats_Liao

后端 Java core 10月月更

IDEA SpringBoot SQL连接常见五大异常处理

Yeats_Liao

后端 Java core 10月月更

25分钟了解命令执行漏洞【例题+详细讲解】(一)

贤鱼很忙

网络安全 Web 10月月更

树莓派4B安装64位Linux(不用显示器键盘鼠标)

程序员欣宸

树莓派 10月月更

如何快速对混合云环境进行安全合规检查

HummerCloud

云安全 上云合规 安全合规检测 10月月更

「CSS畅想」我的发呆专属,反复解锁手机屏幕

叶一一

CSS JavaScript 前端 10月月更

Zepoch节点单日内售罄,市场反响颇高

股市老人

微信朋友圈架构图

Johnny

架构实战训练营9期

Dev-C++5.11安装教程

Yeats_Liao

后端 Java core 10月月更

从手动测试到自动化测试(下)

FunTester

2022-10-14:以下go语言代码输出什么?A:0;B:7;C:9;D:不能编译。 package main import “fmt“ func main() { a := []int

福大大架构师每日一题

golang 福大大 选择题

「Hive进阶篇」三、HQL底层执行过程及原理详解

大数据阶梯之路

大数据 hive 面试 数仓

Photoshop软件应用项目(二)

张立梵

设计师 ps 10月月更

跟着卷卷龙一起学Camera--双摄01

卷卷龙

ISP camera 10月月更

跟着卷卷龙一起学Camera--双摄02

卷卷龙

ISP camera 10月月更

Spring Batch 可以在一个 Step 中有多个 Tasklet 吗

HoneyMoose

还在为sql注入眼花缭乱的过滤而烦恼?一文教您快速找出所有过滤内容

贤鱼很忙

网络安全 SQL注入 10月月更

将系统划分为模块(微服务)的必要性

宇宙之一粟

微服务 系统设计 论文阅读 模块化 10月月更

Vue组件入门(五)props +

Augus

Vue3 10月月更

25分钟了解命令执行漏洞【例题+详细讲解】(二)

贤鱼很忙

sql 网络安全 10月月更

Spring Batch 事务限制

HoneyMoose

大数据ELK(二十五):添加Elasticsearch数据源

Lansonli

elasticsearch 10月月更

「前端组件化」以Antd为例,快速打通UI组件开发的任督二脉

叶一一

前端 React 10月月更

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