《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

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

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

关注

评论

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

IT采购,不再默默扛下“背刺”

白洞计划

AI 联想

Redis事务

京茶吉鹿

nosql redis

新思科技:车联网产业的起点是安全

InfoQ_434670063458

车联网 新思科技 汽车安全

使用 Lambda Web Adapter 在 Lambda 上 构建 web 应用

亚马逊云科技 (Amazon Web Services)

Amazon

集成技术,大山里的金子

阿呆

模块八作业 - 消息队列存储消息数据的 MySQL 表格

🐢先生

架构实战营

有关提升代码质量的思考

阿呆

C# 世界的《Effective C++》,来自.Net之父的核心揭秘

博文视点Broadview

小程序SDK的发展趋势与未来展望

FinFish

小程序 APP开发 小程序容器 超级app

Flutter和小程序容器技术的应用前景与发展潜力

FinFish

flutter 小程序容器 小程序技术

浅谈Data Driven Testing

QE_LAB

测试 数据驱动测试

HTTP与HTTPS的区别

测吧(北京)科技有限公司

测试

Themis Pro版将正式推出,3次迭代到底在酝酿什么?

鳄鱼视界

Themis Pro版将正式推出,3次迭代到底在酝酿什么?

股市老人

使用NSIS打包超大型软件的几个注意事项

大伟

Flutter 使用 CustomPaint 绘制基本图形

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

产品愿景设计:解锁团队潜能,引领市场竞争优势

L3C老司机

产品设计 数字化转型 设计思维 产品设计与思考 产品愿景

面对ChatGPT,中国AI可以不疾不徐不焦虑

脑极体

AI

Flutter 异步编程指南

京东科技开发者

flutter dart 异步任务编程 APP开发 企业号 4 月 PK 榜

Service初涉

芯动大师

android service

历史性的时刻!OpenTiny 跨端、跨框架组件库正式升级 TypeScript,10 万行代码重获新生!

Kagol

typescript 开源 Vue 3 Vue3 Typescript OpenTiny

Selenium Grid作用是什么?Selenium Grid的使用过程?

测吧(北京)科技有限公司

测试

OceanBase入选啦!金融信创优秀解决方案(第二期)

OceanBase 数据库

数据库 oceanbase

释放Go Mutex的威力:编写线程安全代码的技巧和诀窍

Jack

IotLink版本更新V1.10.0

山东云则信息科技

借降本增效之名,探索开闭原则架构设计

京东科技开发者

低代码 软件架构 开闭原则 企业号 4 月 PK 榜

AI自然语言处理的过去和未来

鲸品堂

自然语言处理 ChatGPT 企业号 4 月 PK 榜

三次迭代终放“大招”,Themis Pro版即将问世

BlockChain先知

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