我正在使用RSPEC进行测试,并使用Sidekiq作为后台作业。
因为在rspec中没有用于workers的生成器,所以不知道该使用什么。
https://relishapp.com/rspec/rspec-rails/docs/generators
require 'spec_helper'
RSpec.describe TestWorker, type: ? do # ex. :worker :sidekiq ...
describe "TestWorker" do
it "" do
....
end
end
endbundle exec rspec spec/workers/test_worker_spec.rb
如下所示:uninitialized constant TestWorker需要'spec_helper‘
describe TestWorker do
it "" do
....
end
end当我努力的时候,gem rspec-sidekiq https://github.com/philostler/rspec-sidekiq
有人能提供一个样本模板来测试app/workers/中的Rspec。
谢谢。
发布于 2018-08-09 07:41:12
我没有使用rspec-sidekiq宝石,但是,这里有一个示例说明了我是如何检查使用sidekiq的后台作业的。
# 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发布于 2021-09-27 05:57:07
有时,您可能希望测试的不仅仅是工作人员是否已排队这一事实。
虽然将工人的perform块中可能发生的复杂事情解耦更好,但它可以作为一个标准类进行测试:
it { expect { MyWorker.new.perform }.to change { ...expectations... } }或
it do
MyWorker.new.perform
... expectations ..
endhttps://stackoverflow.com/questions/51759297
复制相似问题