Ruby 运行/排除存在标记的规范

Ruby 运行/排除存在标记的规范,ruby,rspec,Ruby,Rspec,我知道我可以使用-tag:value或添加标记的位置运行给定的规范some_-tagisvalue,但没有值(默认为true)-tag some_-tag。我还知道我可以用上述语法和~排除规范 如何在标记存在/缺失的情况下运行所有规范 例如: 如果我有标有slow::external\u service、slow::manual\u confirmation或slow::some\u other\u reason(这些只是虚构的名称)的规格,我想做如下操作: rspec --tag ~slow

我知道我可以使用
-tag:value
或添加标记的位置运行给定的规范
some_-tag
is
value
,但没有值(默认为
true
-tag some_-tag
。我还知道我可以用上述语法和
~
排除规范

如何在标记存在/缺失的情况下运行所有规范

例如: 如果我有标有
slow::external\u service
slow::manual\u confirmation
slow::some\u other\u reason
(这些只是虚构的名称)的规格,我想做如下操作:

rspec --tag ~slow
并运行所有不慢的规格

上述方法不起作用,因为它过滤掉了
slow==true的规范,而不是
!慢。无?

  • 有没有一种方法可以在有或没有额外配置的情况下实现这一点
  • 做这种事的惯用方法是什么?我猜应该添加两个标记,一个是布尔标记,另一个包含值(例如
    :slow,pending\u on::external\u service
    • 应该会有帮助。基本上叫

      rspec --tag ~slow:external_service
      

      而且它不会运行带有
      slow::external\u service

      标记的测试,使用多个标记排除可能会有所帮助

      rspec--tag~slow:外部服务--tag~slow:手动确认


      参考文章了解其他选项。

      可能是多标签排除,如
      rspec--tag~slow:external_service--tag~slow:manual_confirmation
      可能会对您有所帮助…@VamsiKrishna,我在您的答案下添加了一条评论。OP实际上想跳过所有用slow键标记的标签。不只是一个我知道我可以给多个标记对。重点是-我不想列出所有可能的慢值。例如,如果将来增加了新的减速原因,我不想改变我称之为rspec的方式。或者,如果我有100个减速原因,我不希望调用占据整个屏幕。那么你应该继续执行你建议的第二个选项…添加两个标记,一个布尔标记,一个包含值