У меня есть задание, которое должно отбрасывать указанную ошибку c:
class SomeJob < ApplicationJob
discard_on(Errno::ENOENT) do |job, error|
...do things...
end
def perform(**args)
...do things...
end
end
Я пытался, основываясь на Как правильно протестировать метод retry_on ActiveJob с помощью rspe c? чтобы проверить это следующим образом:
context '#discard_on' do
it 'should discard on Errno::ENOENT error' do
expect_any_instance_of(described_class).to receive(:perform).and_raise(Errno::ENOENT.new)
expect(SomeJob).to have_received(:discard_on)
UploadJob.perform_now(**args)
end
end
, но я получаю следующую ошибку:
#<SomeJob (class)> expected to have received discard_on, but that object is not a spy or method has not been stubbed.
Если я попробую это так:
expect_any_instance_of(SomeJob).to receive(:perform).and_raise(Errno::ENOENT)
expect_any_instance_of(described_class).to receive(:discard_on)
SomeJob.perform_now(**args)
Ошибка с этой ошибкой:
SomeJob does not implement #discard_on