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 для назначения атрибута. Я не уверен, как решить эту проблему, чтобы тест прошел, хотя. Заранее благодарю за любую помощь!