Rspec标签和过滤器 - 过滤器的多个值?

时间:2011-11-29 18:23:46

标签: ruby-on-rails ruby rspec

我有一个测试套件,可以运行多个版本的软件应用程序。我希望能够标记那些根据不同版本而变化的测试,以便我设置的过滤器只运行此特定版本的测试。

我正在寻找类似的东西:

describe "the magic page", :version=>["all-magic", "some_magic"]
   it "exists!"
end

describe "the magic page", :version=>["no-magic"]
   it "does not exist!"
end

Rspec.configure do |config|
  this_version= some_version_parameter_passed_in || "no_magic"
  config.filter_run :version includes this_version
end

显然,这不起作用,但它应该让你知道我想要完成的事情。

2 个答案:

答案 0 :(得分:1)

你可以用Rspec实际做到这一点。看看docs,尝试这样的事情:

describe "the magic page", :all-magic => true, :some-magic => true
   it "exists!"
end

describe "the magic page", :no-magic => true
   it "does not exist!"
end

然后使用魔术标签运行测试,您可以使用命令:

rspec --tag magic

或者您可以修改.rspec

--tag magic

这对你有用吗?

答案 1 :(得分:1)

您可以在过滤器中使用lambdas,如下所示:

config.filter_run_including :foo => lambda {|v| v == 'bar'}

所以你可以做类似

的事情
config.filter_run_including :version => lambda {|v| v.include? current_version}

或者只运行带有正确版本的测试版本(我认为这是您正在寻找的),

config.filter_run_excluding :version => lambda {|v| !v.include? current_version}