Как проверить действие Rails с замороженными строками в качестве параметров?
У меня есть ошибка в действии контроллера Rails 4.2.7.1, где я изменяю входящий параметр:
params[:temperature].gsub!(',', '.')
До недавнего времени это работало, но сейчас это не помогает в разработке и производстве:
can't modify frozen String
Обновление: причина замороженной строки - комментарий в верхней части application_controller.rb
файл:
# frozen_string_literal: true
У меня есть решение этой проблемы, но у меня нет теста, который обнаружил бы ошибку. И мой тест контроллера, и тест интеграции успешно выполнены с ошибочным кодом, и я вижу, что параметры не замораживаются в контроллере, даже если они заморожены при публикации из теста.
Как я могу гарантировать, что замороженные параметры поступят в контроллер в моем тесте?
1 ответ
Вы можете протестировать свое приложение точно так же, как и при обычном использовании, используя тесты гемов и возможностей Capybara. Это использует реальный веб-браузер для тренировки вашего приложения. Это раскрыло мою ошибку отлично.
Недостатком является то, что он намного медленнее, чем тест контроллера или интеграционного теста, в 10-100 раз.