Приложение My Rails в настоящее время имеет конечную точку загрузки миниатюр, которая часто отключается в Heroku из-за 30-секундного ограничения на количество запросов.Я использую Carrierwave и хотел бы переключиться на CarrierWaveDirect , чтобы решить проблему, выполнив прямую загрузку с S3.
Прежде чем сделать это, я хотел бы написатьрегрессионный тест и увидеть его сбой с тайм-аутом запроса.Как я могу это сделать?
Большинство моих тестов - это тесты Selenium / Capybara высокого уровня, поэтому я попытался написать тест, который заглушает действие контроллера и всегда выдает ошибку тайм-аута:
# Simulates 30 second Heroku timeout for thumbnail uploads.
context 'when PATCH requests timeout' do
before do
allow_any_instance_of(Api::V1::VideosController).to receive(:update).and_wrap_original do |m, *args|
if request.content_type == 'multipart/form-data'
raise Net::HTTPRequestTimeOut
else
m.call(*args)
end
end
end
it 'uploads custom thumbnails direct to S3' do
signup_and_verify_email(signup_intent: :seller)
visit_store_via_upload_link
upload_test_video
upload_thumbnail
end
end
Это терпит неудачу, потому что request
не определен в контексте блока.Прежде чем продолжить, как лучше написать тест для этого сценария?