gpt4 book ai didi

ruby-on-rails - 如何为 Rails 作业编写 rspec

转载 作者:行者123 更新时间:2023-12-05 06:33:45 24 4
gpt4 key购买 nike

您好,我正在使用 ruby​​-2.5.0 和 rails 5 进行 RoR 项目。我正在使用 AWS SQS。我创建了一个工作如下:-

class ReceiptsProcessingJob < ActiveJob::Base
queue_as 'abc'

def perform(receipt_id)
StoreParserInteractor.process_reciept(receipt_id)
end
end

现在我想为它编写单元测试。我试过:-

# frozen_string_literal: true

require 'rails_helper'

describe ReceiptsProcessingJob do

describe "#perform_later" do
it "scan a receipt" do
ActiveJob::Base.queue_adapter = :test
expect {
ReceiptsProcessingJob.perform_later(1)
}.to have_enqueued_job
end
end
end

但它不包括 StoreParserInteractor.process_reciept(receipt_id)。请帮助我如何解决这个问题。提前致谢。

最佳答案

该示例正在测试作业类。您需要为 StoreParserInteractor 编写规范并测试方法 process_reciept

类似(伪代码)的内容:

describe StoreParserInteractor do
describe "#process_receipt" do
it "does that" do
result = StoreParserInteractor.process_receipt(your_data_here)
expect(result to be something)...
end
end
end

但是,Rails 指南建议进行这种测试:

assert_enqueued_with(job: ReceiptsProcessingJob) do
StoreParserInteractor.process_reciept(receipt_id)
end

也许这也增加了代码覆盖率。

关于ruby-on-rails - 如何为 Rails 作业编写 rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50598344/

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