您好,我正在使用ruby-2.5.0和Rails5开发一个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)
。请帮帮忙,我怎么才能报道这个呢。提前谢谢。
发布于 2018-05-30 15:40:33
该示例正在测试作业类。您需要为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
也许这也增加了代码覆盖率。
https://stackoverflow.com/questions/50598344
复制相似问题