【发布时间】:2015-10-13 22:18:43
【问题描述】:
根据this post by Stephen Hagemann,我正在尝试为我的一项 rake 任务编写 Rspec 测试。
lib/tasks/retry.rake:
namespace :retry do
task :message, [:message_id] => [:environment] do |t, args|
TextMessage.new.resend!(args[:message_id])
end
end
spec/tasks/retry_spec.rb:
require 'rails_helper'
require 'rake'
describe 'retry namespace rake task' do
describe 'retry:message' do
before do
load File.expand_path("../../../lib/tasks/retry.rake", __FILE__)
Rake::Task.define_task(:environment)
end
it 'should call the resend action on the message with the specified message_id' do
message_id = "5"
expect_any_instance_of(TextMessage).to receive(:resend!).with message_id
Rake::Task["retry:message[#{message_id}]"].invoke
end
end
end
但是,当我运行此测试时,我收到以下错误:
Don't know how to build task 'retry:message[5]'
另一方面,当我运行没有参数的任务时:
Rake::Task["retry:message"].invoke
我能够调用 rake 任务,但测试失败,因为没有 message_id。
我将参数传递给 rake 任务的方式有什么问题?
感谢大家的帮助。
【问题讨论】:
标签: ruby-on-rails ruby rspec rake rake-task