我有以下测试:
require "test_helper"
class DisbursementGenerationTest < ActionDispatch::IntegrationTest
test "disburse test orders" do
puts "Performing job..."
Merchant.all.each do |merchant|
DisburseJob.perform_later(merchant)
end
puts "Job performed"
sleep 10
assert_equal 2, Disbursement.count
end
end
在/config/environment/test.rb中,我将ActiveJob队列适配器设置为inline:
Rails.application.configure do
config.active_job.queue_adapter = :inline
测试中的作业根本不执行。我看到了两个puts语句的输出,但作业没有运行。我已经检查了有2个商家对象的预期。在开发环境中,我使用sidekiq作为作业后端,它可以从rails控制台手动执行作业,也可以在应用程序中执行计划作业。
如何在测试中正确执行ActiveJob?
我已经执行了测试,并期望作业运行两次(每个商户对象运行一次)。作业根本未执行。
1条答案
按热度按时间ou6hu8tu1#
为了进行测试,您应该将队列适配器设置为
test
:然后,您可以使用
perform_enqueued_jobs
执行作业:关于测试助手和测试AJ的更多信息。