我是Ruby的新手,我一直在嘗試學習Rake,RSpec和Cucumber。我發現了一些代碼,可以幫助我測試我的Rake任務,但是我無法使其工作。我在這裏告訴:http://blog.codahale.com/2007/12/20/rake-vs-rspec-fight/放棄這樣的:在rspec(和黃瓜)中測試rake任務
def describe_rake_task(task_name, filename, &block)
require "rake"
describe "Rake task #{task_name}" do
attr_reader :task
before(:all) do
@rake = Rake::Application.new
Rake.application = @rake
load filename
@task = Rake::Task[task_name]
end
after(:all) do
Rake.application = nil
end
def invoke!
for action in task.instance_eval { @actions }
instance_eval(&action)
end
end
instance_eval(&block)
end
end
到我spec_helper.rb文件。
我已經成功了利用這個代碼,並在我的黃瓜的步驟是這樣運行:
When /^I run the update_installers task$/ do
@rake = Rake::Application.new
Rake.application = @rake
load "lib/tasks/rakefile.rb"
@task = Rake::Task["update_installers"]
for action in @task.instance_eval { @actions }
instance_eval(&action)
end
instance_eval(&block)
Rake.application = nil
end
但是當我試圖把事情在rspec的工作,我得到以下錯誤。
引發ArgumentError在 'Rake任務 install_grapevine應該安裝到 的mygrapevine目錄'
錯誤的參數數目(1 2) /spec/spec_helper.rb:21:在
instance_eval' /spec/spec_helper.rb: 21:in
塊調用! 「 /spec/spec_helper.rb:20:在each' /spec/spec_helper.rb: 20:in
invoke!' /spec/tasks/rakefile_spec.rb:12:in`塊(2級)在 '
不幸的是,我剛下通過帶紅寶石的下一個星期了,所以元編程的東西是在我的頭。任何人都可以將我指向正確的方向嗎?
相同沒有RSpec:http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script – 2014-09-24 12:57:52