写点什么

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

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

关注

评论

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

快照有哪几种意思?如何统一管理各云主机快照,实现快速配置与回滚?

行云管家

运维 云主机 快照 IT运维

MobTech MobLink Web端快速集成指南

MobTech袤博科技

JavaScript 集成 跳转访问网页

Shuttle + Alluxio 加速内存Shuffle起飞

Alluxio

开源 OPPO Alluxio spark SQL 8月月更

浅聊一下邮件通知的批量推送

为自己带盐

dotnetcore 8月月更 邮件发送

东莞等保测评多少钱及格?哪里可以做等保测评?

行云管家

等保 等级保护 等保测评 安全等级保护

高性能计算在处理和吞吐量方面的重大突破

Finovy Cloud

计算 高性能计算架构

腾讯云数据安全中台保护方案获“首届全国商用密码应用优秀案例”

腾讯安全云鼎实验室

云安全

商派oneX新零售系统上架华为云云商店,首次参与“828企业节”

神奇视野

Python自学笔记6-列表有哪些常用操作

和牛

Python 测试 8月月更

TDengine3.0 新架构设计思路

TDengine

数据库 tdengine 时序数据库

一次纯线上接口异常的排查过程

南城FE

node.js 前端

兆骑科创承办创业赛事活动,双创服务,创业服务平台

兆骑科创凤阁

SPL:跑批有这么难么

华为云开发者联盟

Java 开发

《中国车联网TSP行业发展洞察2022》案例征集

易观分析

车联网 案例征集

ARM 内核寄存器 和 基本汇编语言讲解

矜辰所致

汇编语言 8月月更 ARM内核 内核寄存器

追一科技携手华为云助力中小企业数字化,Face虚拟数字人亮相828企业节

sofiya

发展场景金融需要重视生态能力建设,加深对场景的渗透程度

易观分析

金融 客户 场景生态建设

在公司内部,做了一次 HTTP(S) 的分享

程序员小毕

程序员 面试 程序人生 https 计算机网络

Spark Optimizer 规则下的 BUG 排查与修复全记录

观远数据

saprk

“中国建筑业竞争力百强”中化二建如何做知识管理?

sofiya

Java更改 PDF 页面大小

在下毛毛雨

如果重新学计算机

价投小邱

Linux 计算机网络 操作系统

腾讯云大神亲码“redis深度笔记”,不讲一句废话,全是精华

Geek_Yin

编程 程序员 架构师 #java redis 底层原理

Python 教程之输入输出(10)—— 输出格式

海拥(haiyong.site)

Python 8月月更

元宇宙的未来商机和应用

智捷云

KubeEdge:下一代云原生边缘设备管理标准DMI的设计与实现

华为云开发者联盟

云计算 云原生 后端

拒绝加班:巧用前端电子表格中构建公式树

葡萄城技术团队

MySQL基础笔记

楠羽

#开源

招行架构师徐佳航:金融云原生与开源标准的共同生长

阿里巴巴云原生

阿里云 开源 容器 云原生 KubeVela

喜报 | 博睿数据两项发明专利获得国家知识产权局授权,累计发明专利11项

博睿数据

APM 可观测性 博睿数据 智能运维AIOps 发明专利

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