WebMock: неопределенный метод `gsub!' для nil:NilClass после использования `stub_request`

Мое приложение использует Carrierwave + Fog для хранения изображений на Amazon S3. У меня есть тест функции Rspec для процесса регистрации, который использует Capybara attach_file помощник, чтобы добавить файл. Спецификация выглядит так:

feature 'Registration' do
  before do
    stub_request(:any, /amazonaws/)
  end

  scenario 'New business signs up' do
    visit new_user_registration_path
    fill_in 'Name',         with: 'my business'
    attach_file 'Logo',     with: "#{Rails.root}/tmp/image.png"
    click_button 'Sign up'

    expect(page).to have_text("Business successfully created.")
  end
end

Заглушка, кажется, работает правильно, но тест не пройден из-за ошибки в контроллере:

  1) Registration 
     Failure/Error: click_button 'Create Business'
     NoMethodError:
       undefined method `gsub!' for nil:NilClass
     # ./app/controllers/businesses_controller.rb:36:in `create_with_user'
     # ./spec/features/registration/signup_spec.rb:32:in `block (2 levels) in <top (required)>'
     # -e:1:in `<main>'

Вот как выглядит контроллер:

  def create_with_user
    @business = Business.new(business_params)
    if @business.save
      redirect_to business_url(@business), success: 'Business was successfully created.'
    else
      render :new_with_user
    end
  end

Линия 36 - это линия, где if @business.save называется. С помощью binding.pryЯ заметил, что logo атрибут на @business является nil после того, как он был создан в строке 35, и я предполагаю, что это связано с запросом-заглушкой, чтобы AWS не возвращал то, что необходимо CarrierWave для назначения атрибута. Я не уверен, как решить эту проблему, чтобы тест прошел, хотя. Заранее благодарю за любую помощь!

0 ответов

Другие вопросы по тегам