我有一个简单的工作人员正在访问其自己的队列的大小:
需要“sidekiq/api”
class TestWorker
include Sidekiq::Worker
def perform(*args)
Sidekiq::Queue.new('test').size
end
end
Run Code Online (Sandbox Code Playgroud)
然后我正在测试这个工人:
require 'rails_helper'
RSpec.describe TestWorker, type: :worker do
describe '#perform' do
it 'executes the job without connecting to Redis in the testing environment' do
require 'sidekiq/testing'
Sidekiq::Testing.fake! do
TestWorker.perform_async
TestWorker.drain
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
此测试失败,因为它尝试访问 redis:
1) TestWorker#perform executes the job without connecting to Redis in the testing environment
Failure/Error: Sidekiq::Queue.new('test').size
Redis::CannotConnectError:
Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:344:in `rescue in establish_connection'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:328:in `establish_connection'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:99:in …Run Code Online (Sandbox Code Playgroud)