在 Rails 4.2 上,我有以下 ActiveJob 测试:
测试/工作/import_job_test.rb
require 'test_helper'
class ImportJobTest < ActiveJob::TestCase
def setup
@response = ImportJob.perform_later "'testing Sidekiq queue jobs'"
end
test "enqueued jobs" do
assert_enqueued_jobs 1
clear_enqueued_jobs
assert_enqueued_jobs 0
end
test "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper" do
assert_equal ["'testing Sidekiq queue jobs'"], @response.arguments
end
test "a second new job has been enqueued with the given arguments" do
assert_enqueued_jobs 1
assert_enqueued_with(job: ImportJob, args: ["'queuing a second job'"], queue: 'default') do
ImportJob.perform_later "'queuing a second job'"
end
assert_enqueued_jobs 2
end
end
运行测试它变绿:
$ rake test test/jobs/import_job_test.rb
Started with run options --seed 35322
4/4: [===================================] 100% Time: 00:00:00, Time: 00:00:00
Finished in 0.01380s
4 tests, 7 assertions, 0 failures, 0 errors, 0 skips
但永远不要真正接触 Sidekiq 队列。当 Sidekiq 关闭时,我也会变绿,这是我不想要的。当然在控制台中运行队列被咬了。
如何指定在测试模式下真正进入队列?