7

我看到可以将参数传递给 rake 任务:

task :task_name, :arg_name do |t, args|

我想做的是将参数传递给黄瓜耙任务:

Cucumber::Rake::Task.new({:tags => 'db:test:prepare'}) do |t, args|
  t.cucumber_opts = ['--tags', #args?]
end

这种事情可能吗?这样我可以做到:

rake cucumber:tags['tag1', 'tag2', ...]

并让它只运行那些标签。大多数消息来源说要使用环境变量,我已经这样做了,但我更愿意以“正确”的方式提供参数。

4

2 回答 2

5

您可以通过执行以下操作来使其工作:

task :task_name, :arg1 do |t, args|
  Cucumber::Rake::Task.new(:run) do |t|
    t.cucumber_opts = "--format pretty --tags @#{args[:arg1]}"
  end
  Rake::Task[:run].invoke()
end
于 2014-03-09T00:10:21.587 回答
-1

这样做的一种方法是通过像这样的环境变量:rake cucumber:tags TAGS=tag1,tag2然后在你的 rake 任务中只是 parse ARGV

tags = ARGV[1].gsub(/.+=/, '')

Cucumber::Rake::Task.new({:tags => 'db:test:prepare'}) do |t, args|
  t.cucumber_opts = ['--tags', tags]
end

你也可以像这样让它更灵活

tags_index = ARGV.index {|a| a.start_with?('TAGS') }
tags = ARGV[tags_index].gsub(/.+=/, '')

但可能你会更好地使用OptionParser之类的东西。

于 2012-11-21T14:37:52.400 回答