Регрессивное тестирование Heroku Тайм-аут запроса - PullRequest
0 голосов
/ 14 октября 2018

Приложение 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 не определен в контексте блока.Прежде чем продолжить, как лучше написать тест для этого сценария?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...