在RSpec测试中,我使用钩子/标志来运行测试子集,类似于examples
中显示的内容# spec_helper.rb
RSpec.configure do |c|
c.filter_run_excluding('broken')
end
此语法有效
# my_spec.rb
describe 'broken test', 'broken' => true do
...
end
此语法失败,错误为syntax error, unexpected ':', expecting end-of-input
# my_spec.rb
describe 'broken test', 'broken': true do
...
end
导致一个人工作而另一个人失败的他们之间有什么区别?
答案 0 :(得分:2)
你的第一个例子
{'broken' => true}
# => {"broken" => true}
创建一个以字符串为键的哈希。但是,当您使用冒号语法时,散列将具有符号键:
{'broken': true} # This is only valid syntax since Ruby 2.2
# => {:broken => true}
{broken: true}
# => {:broken => true}
由于您明确排除了标有字符串键的规格,因此符号不会匹配。
您可以将rspec配置更改为
RSpec.configure do |c|
c.filter_run_excluding(:broken)
end
或继续在规范中使用字符串键。
作为一个很小的帖子脚本:你在第一个规范示例中使用的带有引号字符串的冒号语法仅在Ruby 2.2之后才有效。较旧的Ruby版本会产生您在(编辑过的)问题中引用的语法错误。