我看到可以将参数传递给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', ...]
让它只运行那些标签。大多数消息来源都说要使用环境变量,我已经这样做了,但我更愿意以“正确”的方式提供参数。
答案 0 :(得分: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
答案 1 :(得分:-1)
这样做的一种方法是通过环境变量:rake cucumber:tags TAGS=tag1,tag2
,然后在你的rake任务中解析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这样的东西。