RSpec 2.13 发布!
Myron Marston
2013年2月23日我刚刚发布了 RSpec 2.13。这是一个次要版本,包含一些向后兼容的增强功能和许多错误修复。建议所有用户升级。
感谢所有为 RSpec 版本发布做出贡献的人。
值得注意的新功能
分析超过 10 个示例
RSpec 长期以来一直提供 --profile
选项。它会输出最慢的 10 个示例的报告。现在,您可以传递一个数字选项以使其打印超过 10 个示例。
要打印出最慢的 15 个示例,您可以使用
rspec --profile 15
let
和 subject
声明可以使用 super
用户一直要求这样做。这允许您在嵌套组中覆盖 let
或 subject
声明,同时委托给父组的原始定义。只需使用 super()
。
describe Array do
let(:numbers) { [1, 2, 3, 4] }
context "when evens are filtered out" do
let(:numbers) { super().reject(&:even?) }
end
end
请注意,要使用此功能,您 *必须* 在调用 super
时使用显式括号;否则 ruby 会给您一个难看的 implicit argument passing of super from method defined by define_method() is not supported
错误。
be_within
匹配器支持百分比增量
这最好用一个例子来说明
# The existing `be_within` matcher (which still works):
expect(account.balance).to be_within(10).of(500)
# Now you can do this, too:
expect(account.balance).to be_within(2).percent_of(500)
include
匹配器可以接受匹配器列表
当您想要验证列表中项目的某些内容,而不仅仅是验证项目的标识时,这非常方便。
RSpec::Matchers.define :a_user_named do |name|
match do |user|
user.name == name
end
end
expect(users).to include(a_user_named("Coen"), a_user_named("Daphne"))
文档
RDoc
- http://rubydoc.info/gems/rspec-core
- http://rubydoc.info/gems/rspec-expectations
- http://rubydoc.info/gems/rspec-mocks
- http://rubydoc.info/gems/rspec-rails
Cucumber 特性
- http://relishapp.com/rspec/rspec-core
- http://relishapp.com/rspec/rspec-expectations
- http://relishapp.com/rspec/rspec-mocks
- http://relishapp.com/rspec/rspec-rails
发行说明
rspec-core 2.13.0
增强功能
- 允许
--profile
选项采用一个计数参数,该参数决定要转储的慢速示例的数量 (Greggory Rothmeier)。 - 添加
subject!
,它是let!
的类似物。它定义了一个显式主题,并设置了一个before
钩子,该钩子将调用主题 (Zubin Henner)。 - 修复
let
和subject
声明,以便super
和return
可以在其中使用,就像在普通方法中一样。(Myron Marston) - 允许单独配置输出颜色。(Charlie Maffitt)
错误修复
- 转储匿名错误类的实例的错误输出时,不要爆炸。(Myron Marston)
- 修复默认回溯过滤器,以便来自包含“gems”的项目的代码行不会被过滤,但来自已安装 gem 的代码行仍然会被过滤。(Myron Marston)
- 修复 autotest 命令,使其使用双引号而不是单引号以实现 Windows 兼容性 (Jonas Tingeborn)。
- 修复
its
,以便在父组中的before
或let
声明中使用subject
继续引用父组的主题。(Olek Janiszewski)
rspec-expectations 2.13.0
增强功能
- 为
be_within
匹配器添加百分比增量支持:expect(value).to be_within(10).percent_of(expected)
(Myron Marston)。 - 向
include
匹配器添加支持,以允许它被赋予一个匹配器列表作为要匹配的预期值 (Luke Redpath)。
错误修复
- 修复
change
匹配器,使其复制字符串以处理被修改的字符串 (Myron Marston)。 - 修复
should be =~ /some regex/
/expect(...).to be =~ /some regex/
。以前,这些要么以令人困惑的undefined method matches?' for false:FalseClass
错误失败,要么是无操作,实际上没有验证任何内容 (Myron Marston)。 - 添加对 diff-lcs 1.2 的兼容性,并放宽版本约束 (Peter Goldstein)。
- 修复 DSL 生成的匹配器,以允许在同一示例中出现多个相同匹配器,并根据预期值具有不同的描述和失败消息 (Myron Marston)。
- 防止转储多行字符串数组的差异时出现
undefined method #split for Array
错误 (Myron Marston)。 - 比较不在 ASCII 兼容编码中的字符串时,不要爆炸。(Myron Marston)
- 删除针对空差异打印的令人困惑的“检查 #== 的实现”消息 (Myron Marston)。
rspec-mocks 2.13.0
错误修复
- 修复了一个错误,该错误会导致当一个之前用多个返回值 (例如
obj.stub(:foo).and_return(1, 2)
) 存根的方法随后用单个返回值 (例如obj.should_receive(:foo).once.and_return(1)
) 模拟时出现奇怪的行为。(Myron Marston) - 修复了与已有多个带有不同
with
约束的存根的方法的模拟期望相关的错误。以前,使用第一个存根,即使它可能与传递的参数不匹配。修复在接收消息之前推迟此决定,以便可以根据传递的参数选择正确的存根响应 (Myron Marston)。 - 不要在模拟对象上额外调用
nil?
,以防nil?
本身期望调用一定次数 (Myron Marston)。 - 修复
missing_default_stub_error
消息,以便正确处理数组参数 (Myron Marston)。 - 明确禁止
any_instance.unstub!
(Ryan Jones)。 - 修复
any_instance
存根,使其适用于Delegator
子类 (Myron Marston)。 - 修复
and_call_original
,使其适用于Delegator
子类 (Myron Marston)。 - 修复
any_instance.should_not_receive
,当在同一示例中对同一类使用any_instance.should_receive
时。以前,即使没有收到消息,它也会错误地报告失败 (Myron Marston)。
rspec-rails 2.13.0
增强功能
be_valid
匹配器包含验证错误消息。(Tom Scott)- 添加了 cucumber 场景,展示了如何调用匿名控制器的非资源性操作。(Paulo Luis Franchini Casaretto)
- 当视图被存根时,使用空模板处理程序。(Daniel Schierbeck)
- Rails 4 中生成的
spec_helper.rb
包含对待定迁移的检查。(Andy Lindeman) - 添加了
rake spec:features
任务。(itzki) - 每个 spec/ 目录都会自动生成 Rake 任务。(Rudolf Schmidt)