Ruby 以编程方式跳过RSpec中的测试

Ruby 以编程方式跳过RSpec中的测试,ruby,specifications,Ruby,Specifications,我很好奇,在before块中是否有办法跳过RSpec中的测试?我是这样想的: RSpec.configure do |config| config.before(:each) do |spec| if some_condition? spec.skip end end end 上述调用跳过无效。这是我正在研究的一个想法,因此它以这种方式工作,而不必使用元数据修改测试,这一点很重要。我认为可以使用RSpec内部构件,例如标记状态,但我想先检查一下是否有任何AP

我很好奇,在before块中是否有办法跳过RSpec中的测试?我是这样想的:

RSpec.configure do |config|
  config.before(:each) do |spec|
    if some_condition?
      spec.skip
    end
  end
end

上述调用
跳过
无效。这是我正在研究的一个想法,因此它以这种方式工作,而不必使用元数据修改测试,这一点很重要。我认为可以使用RSpec内部构件,例如标记状态,但我想先检查一下是否有任何API用于此操作。

看起来您必须在块内显式调用skip:

around(:each) do |example|
  if some_condition?
    example.run
  else
    example.skip
  end
end
文件


将示例转换为“挂起”(跳过它,以不同方式打印输出,等等)

我在rspec邮件列表中询问,结果是
跳过“原因”
起了作用。该示例标记为挂起,这并不理想,但这回答了问题

你可以跳出不起作用的障碍,只是尝试一下。我的意思是,它确实退出了before块,但示例仍在运行。我明白了,然后您可以使用暂停测试。这也不行,我已经查看了联机列出的选项。不起作用,因为这肯定会运行示例。我用我测试的工作示例更新了我的注释。调用
example.skip
跳过规范,
example.run
运行规范