Моих 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 в отключении режима, чтобы проверить, что:
- рабочих места помещёны
- 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