首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用RSpec测试Sidekiq工作人员?

如何用RSpec测试Sidekiq工作人员?
EN

Stack Overflow用户
提问于 2018-08-09 05:16:18
回答 2查看 7K关注 0票数 2

我正在使用RSPEC进行测试,并使用Sidekiq作为后台作业。

因为在rspec中没有用于workers的生成器,所以不知道该使用什么。

https://relishapp.com/rspec/rspec-rails/docs/generators

代码语言:javascript
复制
require 'spec_helper'

RSpec.describe TestWorker, type: ? do # ex. :worker :sidekiq ...
  describe "TestWorker" do
    it "" do
     ....
    end
  end
end

bundle exec rspec spec/workers/test_worker_spec.rb

如下所示:uninitialized constant TestWorker需要'spec_helper‘

代码语言:javascript
复制
describe TestWorker do
  it "" do
   ....
  end
end

当我努力的时候,gem rspec-sidekiq https://github.com/philostler/rspec-sidekiq

有人能提供一个样本模板来测试app/workers/中的Rspec。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-09 07:41:12

我没有使用rspec-sidekiq宝石,但是,这里有一个示例说明了我是如何检查使用sidekiq的后台作业的。

代码语言:javascript
复制
# app/spec/workers/demo_worker_spec.rb

require 'rails_helper'
require 'sidekiq/testing'
Sidekiq::Testing.fake!

RSpec.describe DemoWorker, type: :worker do

  describe "Sidekiq Worker" do

    let (:demo) { FactoryGirl.create(:demo) }

    it "should respond to #perform" do
      expect(DemoWorker.new).to respond_to(:perform)
    end

    describe "Demo" do

      before do
        Sidekiq::Extensions.enable_delay!
        Sidekiq::Worker.clear_all
      end

      it "should enqueue a Email and SMS job" do
        assert_equal 0, Sidekiq::Extensions::DelayedMailer.jobs.size
        Mailer.delay.demo_request(demo.id)
        assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs.size
      end

    end

  end

end
  1. 到目前为止,我正在检查实例是否响应于执行。
  2. 然后,我在计划作业之前和之后进行断言。
票数 6
EN

Stack Overflow用户

发布于 2021-09-27 05:57:07

有时,您可能希望测试的不仅仅是工作人员是否已排队这一事实。

虽然将工人的perform块中可能发生的复杂事情解耦更好,但它可以作为一个标准类进行测试:

代码语言:javascript
复制
it { expect { MyWorker.new.perform }.to change { ...expectations... } }

代码语言:javascript
复制
it do
  MyWorker.new.perform
  ... expectations ..
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51759297

复制
相关文章

相似问题

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