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