首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为rails作业编写rspec

如何为rails作业编写rspec
EN

Stack Overflow用户
提问于 2018-05-30 15:06:01
回答 1查看 2.1K关注 0票数 3

您好,我正在使用ruby-2.5.0和Rails5开发一个RoR项目,我正在使用AWS SQS。我已经创建了一个职位,如下:

代码语言:javascript
复制
class ReceiptsProcessingJob < ActiveJob::Base
  queue_as 'abc'

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

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

代码语言:javascript
复制
# 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)。请帮帮忙,我怎么才能报道这个呢。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-05-30 15:40:33

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

类似(伪代码)的东西:

代码语言:javascript
复制
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指南建议使用这种测试:

代码语言:javascript
复制
assert_enqueued_with(job: ReceiptsProcessingJob) do
  StoreParserInteractor.process_reciept(receipt_id)
end

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50598344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档