вот небольшое описание моего кода (упрощенно)
app / jobs /
class GenerateInvoiceJob < ActiveJob::Base
queue_as :default
def perform()
Invoice.create
end
end
app / models /
class Product < ActiveRecord::Base
def buy
GenerateInvoiceJob.perform_later
end
end
spec / jobs
RSpec.describe AnotherJob, type: :job do
context "with filter" do
...
end
end
spec / models
RSpec.describe Product, type: :model do
describe '#buy' do
it "should generate invoice" do
Product.create().buy
expect(Invoice.all.size).to eq 1
end
end
end
с рельсами 4.2.11
при запуске
rspe c spec / models / product_spe c .rb
, тогда тест в порядке (задание выполнено)
при запуске
rspe c spe c -e 'должен сгенерировать счет'
, тогда тест не пройден, потому что задание не будет выполнено
, если я удалю все тестовые задания из спецификации / заданий и затем выполню
rspe c spe c -e 'должен сгенерировать счет'
, тогда тест в порядке (задание выполнено)
Я могу ' не понимаю, почему наличие некоторых тестов на выполнение работ мешает выполнению других заданий? Есть ли решение для этого?
с рельсами 5 и рельсами 6
Что бы я ни делал, тест всегда не удался, так как задание никогда не выполнялось?
Разве это не задания Выполняется больше во время испытаний, так как рельсы 5?
спасибо за помощь
обновление 1 после первого ответа:
большое спасибо для вашего ответа просто чтобы убедиться, что я делаю правильно:
Я добавил в environment / test.rb config.active_job.queue_adapter =: test
и в моей спецификации / models / product_spe c .rb
RSpec.describe Product, type: :model do
describe '#buy' do
it "should generate invoice" do
ActiveJob::Base.queue_adapter.perform_enqueued_jobs = true
Product.create().buy
expect(Invoice.all.size).to eq 1
end
end
end
не уверен, что положил
ActiveJob::Base.queue_adapter.perform_enqueued_jobs = true
в хорошее место?!