ruby - 将参数传递给 Rspec SpecTask

标签 ruby rspec rake

Rake 允许以下语法:

task :my_task, :arg1, :arg2 do |t, args|
  puts "Args were: #{args}"
end

我希望能够做同样的事情,但是使用 RSpecs SpecTask。

不幸的是,以下失败了:

desc "Run example with argument"
SpecTask.new('my_task'), :datafile do |t, args|
  t.spec_files = FileList['*_spec.rb -datafile=#{args}']
  t.spec_opts = ["-c -f specdoc"]
end

是否可以通过 SpecTask 实现这一点,或者是否有替代方法?

最佳答案

如果 rspec 不支持 args 变量,您可以将其作为命令行参数和/或来自其他位置的变量传递。

rake datafile=somevalue

@datafile = ENV["datafile"]

desc "Run example with argument"
SpecTask.new :my_task do |t|
  t.spec_files = FileList["*._spec.rb -datafile=#{@datafile}"]
  #... etc
end

关于ruby - 将参数传递给 Rspec SpecTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926364/

相关文章:

ruby-on-rails - RSpec 设置 session 对象

ruby-on-rails - 通过 "rake spec"调用时 RSpec 规范失败,通过 "spec spec"调用时通过

ruby-on-rails - 如何停止通过 Heroku Scheduler 运行 Rails 任务的 Heroku Dyno?

ruby-on-rails - 在 Rails 中加载 csv 文件时没有这样的文件或目录错误

c - Ruby 源文件中的 "VALUE"类型是什么?

ruby - capybara 的未定义方法 'set_cookie' 如何创建 cookie?

ruby-on-rails - Rspec:隐式定义的主题

ruby - 在 Ruby 中使用循环计数器作为变量名的一部分

ruby-on-rails - 我的 Rails 4.2.6 应用程序使用两个数据库。我可以只使用一个进行测试吗?

ruby - 检测是否安装了 git 的独立于平台的方法