gpt4 book ai didi

ruby - 为什么 rspec 过滤器钩子(Hook)只适用于箭头语法?

转载 作者:行者123 更新时间:2023-11-28 20:28:19 25 4
gpt4 key购买 nike

在 RSpec 测试中,我使用 Hook /标志来运行测试子集,类似于 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

导致一个工作而另一个失败的区别是什么?

最佳答案

你的第一个例子

{'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 版本会产生您在(编辑过的)问题中引用的语法错误。

关于ruby - 为什么 rspec 过滤器钩子(Hook)只适用于箭头语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42960394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com