gpt4 book ai didi

ruby-on-rails - 使用 Rspec 测试 rake 任务不接受参数

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:20 26 4
gpt4 key购买 nike

根据 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 任务的方式有什么问题?

感谢所有帮助。

最佳答案

因此,根据 thisthis ,以下是一些带参数调用 rake 任务的方法:

Rake.application.invoke_task("my_task[arguments]")

Rake::Task["my_task"].invoke(arguments)

另一方面,我将任务称为:

Rake::Task["my_task[arguments]"].invoke

这是上述两种方法的错误组合。

非常感谢 Jason 的贡献和建议。

关于ruby-on-rails - 使用 Rspec 测试 rake 任务不接受参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com