gpt4 book ai didi

ruby-on-rails - 如何使用 RSpec 测试 delay_job 回调 Hook

转载 作者:行者123 更新时间:2023-12-04 21:23:53 24 4
gpt4 key购买 nike

我想验证是否调用了延迟作业回调 Hook ,但我不知道如何让 RSpec 来执行此操作,尤其是在涉及多层类时。

假设我有一个这样的 ActiveRecord 模型:

class MyJob < ActiveRecord::Base
def perform
# do some stuff
end
def after(job)
# called by delayed_job after perform completes
end
end

从概念上讲,我想要按照这些思路进行 RSpec 测试(尽管我知道这是不正确的):
it 'should call the :after callback hook' do
my_job = MyJob.create
my_job.should_receive(:after).with(an_instance_of(Delayed::Backend::ActiveRecord::Job))

Delayed::Job.enqueue(my_job)
Delayed::Worker.new.work_off
end

我仔细研究了 stackoverflow、relishapp.com/rspec 和所有其他我能想到的地方。不会太难吧? (我敢打赌@zetetic 知道他睡梦中的答案……;)

(警告:我的实际案例在 MyJob 和 DJ 之间使用了一个“垫片”类。这个简单案例的答案可能会引发更复杂的后续!)

最佳答案

恕我直言,我认为这不是最好的做法......

通过这样做,您是在尝试指定 DelayedJob 的行为,而不是您的应用程序,并且 DJ 已经有自己的一套测试。

无论如何, mock DelayedJob 本身怎么样?也许您可以通过这样做指定您的 MockedJob 将在处理后调用您的钩子(Hook),并且您可以相应地创建匹配器/期望......

关于ruby-on-rails - 如何使用 RSpec 测试 delay_job 回调 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073307/

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