写点什么

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

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

关注

评论

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

千锋小狮视觉“未来设计师就业实战训练营”圆满收官,2周年庆即将开启!

千锋IT教育

前端页面之“回流重绘”

CoderBin

CSS html 面试 前端 10月月更

设计模式之建造者模式

游坦之

设计模式 java 编程 10月月更

cstdio的源码学习分析10-格式化输入输出函数fprintf---宏定义/辅助函数分析05

桑榆

源码刨析 10月月更 C++

Serverless应用架构转型

阿泽🧸

Serverless 10月月更

彻底搞懂JS原型与原型链

hellocoder2029

JavaScript

企业团队知识如何管理?来试试这个办法!

Baklib

效率 效率工具 知识管理 团队

【从0到1学算法】7.直接插入排序

Geek_65222d

10月月更

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

Baklib

知识管理 企业知识管理工具 知识管理系统

Kubernetes Pod 底层实现方式

CTO技术共享

Kubernetes 个人成长 pod 10月月更

朋友圈架构设计

Jack

架构实战训练营9期

K8s Helm 微服务部署利器

CTO技术共享

Kubernetes 个人成长 Helm 10月月更

JS Array数组几个循环实用方法总结

MegaQi

JavaScrip 10月月更

java的可变参数

TimeFriends

远程办公提高效率的工具:在线协作文档

Baklib

效率 效率工具 协作文档

【Vue】悬浮窗和聚焦登录组件经验总结

游坦之

前端 vue2 10月月更

【愚公系列】2022年10月 Go教学课程 031-结构体方法

愚公搬代码

10月月更

每个系统管理员都应该知道的 6 个 Linux 网络命令

wljslmz

Linux 网络命令 10月月更 系统管理员

从《三体》到Silkpunk,这些中式科幻用什么打动了西方人?

脑极体

华为王泽锋:协作创新、开源的魅力所在

科技热闻

设计模式之桥接模式

游坦之

设计模式 java 编程 10月月更

Kubernetes能否帮助解决自动化

CTO技术共享

Kubernetes 个人成长 10月月更

一起聊服务架构的演进过程

南极仙翁

架构 技术 后端 服务架构

BizWorks助力企业应用的高效开发与复用

阿里云E2企业云服务

阿里云 开发者 云原生 低代码

【GOF】三种工厂模式~

游坦之

设计模式 java 编程 10月月更

APICloud AVM 框架 纵向滚动通知栏组件

YonBuilder低代码开发平台

SAP | abap基本语法规则

暮春零贰

SAP abap 10月月更

满足客户需求,提高客户体验:在线产品手册

Baklib

产品 推广 客户 客户体验 在线产品手册

从0到1实现一套CICD流程之CD

okokabcd

后端

【Vue】Axios详解

游坦之

前端 axios vue2 10月月更

分布式协调服务的存在意义

穿过生命散发芬芳

分布式协调 10月月更

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