Tôi là người mới đối với Ruby, và tôi đã cố gắng học Rake, RSpec và Cucumber. Tôi tìm thấy một số mã sẽ giúp tôi kiểm tra tác vụ Rake của mình, nhưng tôi đang gặp sự cố khi làm việc. Tôi đã được thông báo ở đây: http://blog.codahale.com/2007/12/20/rake-vs-rspec-fight/ để thả điều này:Thử nghiệm một công việc cào trong rspec (và dưa chuột)
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
vào tệp spec_helper.rb của tôi.
tôi đã quản lý để lấy mã này ra và chạy nó trong bước dưa chuột của tôi như thế này:
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
nhưng khi tôi cố gắng để có được những điều làm việc trong rspec, tôi nhận được lỗi sau.
ArgumentError trong 'Rake nhiệm vụ install_grapevine nên cài đặt vào thư mục mygrapevine'
sai số đối số (1 trong 2) /spec/spec_helper.rb: 21: trong
instance_eval' /spec/spec_helper.rb: 21:in
khối trong invoke! ' /spec/spec_helper.rb: 20: trong sốeach' /spec/spec_helper.rb: 20:in
gọi! ' /spec/tasks/rakefile_spec.rb:12:in 'khối (2 cấp) trong '
Thật không may, tôi đã có chỉ dưới một tuần ruby dưới của vành đai, vì vậy các công cụ lập trình meta đã qua đầu của tôi. Ai có thể chỉ cho tôi đi đúng hướng?
tương tự không có RSpec: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –