【发布时间】:2021-10-31 12:02:59
【问题描述】:
我有一个看起来像这样的 Sidekiq 工作:
class Arbitrary::MarkSold < ApplicationJob
def perform(item_id)
return if Rails.env.test?
item = Item.find_by(item_id)
item.sold = true
item.save
end
end
相应的 RSpec 测试如下所示:
Rspec.describe Arbitrary::MarkSold, type: :job do
describe 'perform' do
it 'runs' do
expect(Arbitrary::Marksold).to receive(:perform).and_return(nil)
MarkSold.new.perform(34)
end
end
end
当我尝试运行此测试时,我因以下错误而失败:
Arbitrary::MarkSold does not implement: perform`.
但是,我可以清楚地看到Arbitrary::MarkSold 有一个perform 方法。
我已经阅读了Method Stubs,但无法从中得出正面或反面,也无法弄清楚如何将其应用于这种情况。
我非常感谢任何指向文档的指针或链接,而不是我链接的文档。作为初学者,我发现 rspec 文档对初学者不太友好。提前谢谢!
Ruby 版本:2.4.9 导轨版本:5.1.7 RSpec 版本:3.7
【问题讨论】:
标签: ruby-on-rails methods rspec sidekiq stub