0
我Sidekiq工人如下面的例子:禁用模式下的Sidekiq測試實際上如何工作?
Class BooksWorker
include Sidekiq::Worker
def perform
books = Book.where(collected: true)
books.each do |book|
book.update_attribute(:status, "read")
book.toggle!(:collected)
end
end
end
我想用Sidekiq測試模式爲Disable檢查:
- 作業排隊
- Sidekiq與Redis的通信(工種被推到Redis)
- 工作從Redis檢索並執行
- 工作提供預期結果
我可以創建什麼樣的測試來檢查以上所有四點?
考慮下面的例子測試:
require 'test_helper'
require 'sidekiq/testing'
class BooksWorkerDisableTest < Minitest::Test
def setup
configure = -> (config) do
config.redis = { url: 'redis://localhost:6379/15' }
end
Sidekiq.configure_client(&configure)
Sidekiq.configure_server(&configure)
Sidekiq::Testing.disable!
@books = Book.where(collected: true)
end
test "collected books should be marked as read before archived" do
BooksWorker.perform_async
@books.each do |book|
assert book.status == "read"
assert book.collected == false
end
end
end
如果在測試過程中Sidekiq入隊的工作,推到Redis的,從Redis的檢索它並執行它,多久後纔會測試完成,假設只有在作業完成後才結束測試?
上述測試僅檢查第四點:如何測試其他點?我想這只是暗示,如果這些工作被執行,那麼他們已經排隊並推到Redis之前。
謝謝。假設假模式可以測試1,內聯模式可以測試4.作爲新手,我不知道禁用模式如何測試2,以及如何執行手動測試3。 – Asarluhi