NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

融云漫话:没有一个人躲得过“视频会议”

融云 RongCloud

OpenHarmony 3.1 Release版本关键特性解析——构建OpenHarmony窗口框架

OpenHarmony开发者

OpenHarmony OpenHarmony 3.1 Release 窗口框架

云原生技术应用情况报告重磅发布

行云创新

云计算 云原生 开发 报告 行业

过去一年对我帮助最大的三本书

大数据梦想家

个人成长 程序人生 读书总结

Python写实用小工具-实现图片转字符画

okokabcd

Python

云原生技术新版图——无服务器(Serverless)数据库

亚马逊云科技 (Amazon Web Services)

数据库 Serverless 云原生

读万卷书为何无用?

大数据梦想家

程序员 个人成长 读书感悟

下载Spring4.1.x源码并用IntelliJ IDEA打开

程序员欣宸

Java 5月月更

Android 子线程 UI 操作真的不可以?

vivo互联网技术

android 线程 UI

战码先锋直播预告丨参与文档贡献,开启OpenHarmony社区贡献之旅

OpenHarmony开发者

OpenHarmony OpenHarmony 3.1 Release 社区贡献

数字化时代,企业知识管理软件怎么选

小炮

企业知识管理

我的编程学习经历

留乘船

学习

MQTT协议连接阿里云物联网服务器​

DS小龙哥

5月月更

记一个 Harvester SNAT 案例

Rancher

Kubernetes k8s rancher Harvester

解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!

沉默王二

GitHub

云原生平台 Kyma 上创建的 Lambda Function 的技术实现细节介绍

Jerry Wang

Kubernetes 云原生 SAP Kyma 5月月更

【LeetCode】单值二叉树Java题解

Albert

LeetCode 5月月更

为何架构设计能力难以提升?- 作业

阿拉阿拉幽幽

抖音日均拦截93%诈骗行为:如何打击互联网诈骗行为

石头IT视角

大数据开发面试之26个Spark高频考点

大数据梦想家

大数据 spark 八股文

浅析大模型在自然语言处理方面的应用

算AI

人工智能 机器学习 产品 算法 5月月更

LabVIEW仪器控制:智能直流电源(科睿源KA3003)

不脱发的程序猿

串口通信 工业自动化 直流电源控制软件 LabVIEW仪器控制

使用 Amazon SageMaker 为新用户提供实时音乐推荐

亚马逊云科技 (Amazon Web Services)

Amazon 音乐 实时推送

MASA Auth - 权限设计

MASA技术团队

C# .net 微软 权限

大厂裁员登上热搜,谈谈我的3点认知

大数据梦想家

大数据 个人成长 程序人生 裁员

LabVIEW仪器控制:智能显示屏(数码管显示屏)

不脱发的程序猿

串口通信 工业自动化 LabVIEW仪器控制 数码管显示屏软件 数码管显示屏

Python爬虫网页元素定位术,就在这篇博客中

梦想橡皮擦

5月月更

java开发培训任务调度框架Quartz的用法

@零度

JAVA开发

Kafka 核心知识点灵魂 16 问

大数据梦想家

大数据 kafka 八股文

Amazon Kinesis Data Streams 实现跨账户应用日志收集

亚马逊云科技 (Amazon Web Services)

日志 Data

2022 携程提前批大数据一二(oc) 面经

大数据梦想家

大数据 面经分享

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