У меня есть инициализатор в модели:
def initialize(user=nil, attributes={})
@user = user
indifferent_access_attributes = attributes.with_indifferent_access
(self.class.seller_fields & indifferent_access_attributes.keys.map(&:to_sym)).each do |field|
seller[field] = indifferent_access_attributes[field]
end
validate!
end
Проверка правильности модели Rspec
Затем я создаю новую модель и проверяю, если она действительна, она проходит:
values = {"has_style"=>"1234", "color"=>"black"}
cr = CarRegistration::seller.new(@user, values)
cr.valid?
expect(cr.errors[f]).to include("can't be blank")
Однако, это не должно произойти, поскольку при тестировании вручную я получаю ошибку:
неопределенный метод `with_indifferent_access 'для ActionController :: Параметры: 0x00007facc67ef980
Первоначально ядобавил код indifferent_access_attributes = attributes.with_indifferent_access
, потому что мои тесты rspec не выполнялись, но ручные тесты работали.Теперь ручные тесты не пройдены, и тест rspec работает.
Я предполагаю, что моя модель воспринимает параметры как параметры, когда сервер передает их, а моя модель видит их как хэш из теста rspec.Как мне сохранить свой тест и сервер согласованными и параметры теста в rspec?Кроме того, как я могу исправить мою ошибку.
Сводка
Чтобы прояснить еще больше: мой тест rspec проходит values
как хэш-класс, а когда я тестирую вручную, класс параметров передается.Как передать класс параметров в rspec вместо хеш-класса?