我可以在rspec中使用多个排除过滤器吗?

时间:2011-04-11 23:52:10

标签: ruby rspec filtering

在_spec.rb文件中,我正在设置一个类似的排除过滤器:

RSpec.configure do |config|
  # we need determine this once at the very front
  # and the result be available in the instance
  server_success = server1_available?

  config.exclusion_filter = {
    :svr1 => lambda {|what|
      case what
      when :available
        !server_success
      end
    }
  }
end

然后在我做的文件中

describe :get_items_by_client, :svr1 => :available do

如果服务器不可用,则阻止测试执行。

如果单独运行spec文件,这一切都正常。但是,我在控制访问不同服务器的测试的另一个文件中有类似的代码,当我运行它们时,我只看到每个服务器检查完成(我有一个放入“serverX_available?”代码),但只有正在排除一组测试(即使两个服务器都不可用)。

我开始认为你只能有一个排除过滤器,但我可以找到任何与之相关的文档。这是可行的每个文件?我可以在支持文件中使用单个复杂的过滤器,但是当我只运行单个spec文件时,如何将其合并?

理想情况下,我想找一个每个文件工作的表单,但让我进行一次可用性检查,因为它是一个有点昂贵的检查,我在测试中有几个由它控制的例子。

1 个答案:

答案 0 :(得分:0)

config.filter_run_excluding :cost => true
config.filter_run_excluding :slow => true

试试这个,这很有效。