Прохождение теста инициализатора rspec, но реальный код прерывается при тестировании вручную - PullRequest
0 голосов
/ 07 марта 2019

У меня есть инициализатор в модели:

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 вместо хеш-класса?

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