Je suis novice en Ruby et j'ai essayé d'apprendre Rake, RSpec et Cucumber. J'ai trouvé du code qui m'aidera à tester mes tâches Rake, mais j'ai du mal à le faire fonctionner. On m'a dit ici: http://blog.codahale.com/2007/12/20/rake-vs-rspec-fight/ de laisser tomber ceci:Test d'une tâche rake dans rspec (et concombre)
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
dans mon fichier spec_helper.rb.
J'ai réussi à prendre ce code à exécuter et à mes pas de concombre comme ceci:
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
mais lorsque je tente de faire avancer les choses qui travaillent dans rspec, je reçois l'erreur suivante.
ArgumentError dans 'tâche Rake install_grapevine doit installer à le répertoire mygrapevine'
nombre incorrect d'arguments (1 pour 2) /spec/spec_helper.rb: 21: dans
instance_eval' /spec/spec_helper.rb: 21:in
bloc invoquons! ' /spec/spec_helper.rb: 20: danseach' /spec/spec_helper.rb: 20:in
invoke! ' /spec/tasks/rakefile_spec.rb:12:in `bloc (2 niveaux) dans '
Malheureusement, j'ai un peu moins d'une semaine de rubis sous par la ceinture, de sorte que la substance de métaprogrammation est terminée ma tête. Quelqu'un pourrait-il me pointer dans la bonne direction?
même sans RSpec: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –