默认情况下不运行规范,除非设置了标志

时间:2016-12-22 17:08:22

标签: ruby-on-rails rspec

我们有一套控制器规格,以确保我们的api按预期工作。

我还想添加一个默认情况下不运行但可以运行的性能测试(可能就像通过rspec spec/controllers/item_controller.rb:50这样的行号一样简单。其中一些可能是几秒钟所以我们不希望每次都跑步(4秒x 30个动作加起来)。

是否有办法在默认情况下排除规范或描述块,但是是否可以通过行号运行?

1 个答案:

答案 0 :(得分:3)

为每个慢速测试添加标签以识别它们,例如,

it 'should do something', slow: true do
  #does something
end

然后只需使用独占标记选项运行rspec:

rspec --tag ~slow

这将运行所有不具有与之关联的slow标记的测试。要与其他测试一起运行慢速测试,只需在没有标记选项的情况下调用。

最好将此作为默认行为,在这种情况下修改.rspec配置文件并将以下内容添加到其中:

--tag ~slow

现在默认情况下,只需运行rspec,所有测试都将运行,但标记为缓慢的测试除外。要运行慢速测试,请显式设置标志:

rspec --tag slow

虽然这将排除所有未被标记为缓慢的测试。