QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

Nautilus Chain 推出全新 Layer3 DID 公民身份,限量 10 万枚免费发放

鳄鱼视界

PoseiSwap 将向 Zepoch 节点持有者发放新一轮空投,生态启动在即

股市老人

Java程序性能分析:开篇之jps

javalover123

Java 性能优化 性能 后端

大厂月入3w+,失业焦虑折磨着我

程序员晚枫

程序员 大厂 焦虑

免费搭建一个有脾气的聊天机器人,1行Python代码就够了!

程序员晚枫

Python 微信 机器人

PoseiSwap 将向 Zepoch 节点持有者发放新一轮空投,生态启动在即

BlockChain先知

Go 语言 context 都能做什么?

AlwaysBeta

Go Context go面试题

PoseiSwap 将向 Zepoch 节点持有者发放新一轮空投,生态启动在即

鳄鱼视界

豫园股份基于低代码敏捷式开发的实践与落地

明道云

es笔记四之中文分词插件安装与使用

Hunter熊

中文分词 elasticsearch

边阅读,边成长

少油少糖八分饱

阅读 每天读本书 书评

AI、机器学习、大模型、生成式AI和安全

啸天

人工智能 机器学习 安全 大模型 ChatGPT

【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服务调优)

码界西柚

JVM Java虚拟机 技术推荐 技术调优 开发实战

我在AIGC和数字中台方面的架构升级设计

大东(AIP内容运营专员)

PoseiSwap 将向 Zepoch 节点持有者发放新一轮空投,生态启动在即

西柚子

C++实现对RGB图片进行编码

芯动大师

【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)

码界西柚

RPC 架构分析 分布式服务

C++中fork函数的使用及原理

芯动大师

专科学历,有机会转行程序员吗?

程序员晚枫

程序员 面试 转行 学习计划

趣解领域驱动设计-从地心说到日心说

凡语

领域驱动设计

py基础知识点归纳总结

全栈若城

Python 学习 基础

2023-07-02:给定一个1~N的排列,每次将相邻两数相加,可以得到新的序列,长度是N-1 再对新的序列,每次将相邻两数相加,可以得到新的序列,长度是N-2 这样下去可以最终只剩一个数字 比如 :

福大大架构师每日一题

Go 福大大架构师每日一题

代码随想录训练营Day03- 链表(上)

jjn0703

Nautilus Chain 推出全新 Layer3 DID 公民身份,限量 10 万枚免费发放

股市老人

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