Sono nuovo a Ruby e ho cercato di imparare Rake, RSpec e Cucumber. Ho trovato un codice che mi aiuterà a testare le mie attività di Rake, ma ho difficoltà a farlo funzionare. Mi è stato detto qui: http://blog.codahale.com/2007/12/20/rake-vs-rspec-fight/ far cadere questo:Test di un'attività di rake in rspec (e cetriolo)
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
nel mio file spec_helper.rb.
sono riuscito a prendere questo codice fuori e correre nei miei passi cetriolo in questo modo:
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
ma quando provo a far funzionare le cose in RSpec, ottengo l'errore seguente.
ArgumentError in 'Rake compito install_grapevine dovrebbe installare al directory mygrapevine'
numero errato di argomenti (1 per 2) /spec/spec_helper.rb: 21: in
instance_eval' /spec/spec_helper.rb: 21:in
blocco nel invoke! ' /spec/helec_helper.rb: 20: ineach' /spec/spec_helper.rb: 20:in
invoke! ' /spec/tasks/rakefile_spec.rb:12:in `blocco (2 livelli) in '
Purtroppo, ho poco meno di una settimana di rubino sotto da cintura, in modo la roba metaprogrammazione è finita la mia testa. Qualcuno potrebbe indicarmi la giusta direzione?
stesso senza RSpec: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –