Есть ли хороший способ в Rspec сравнить два объекта ActiveRecord при игнорировании id, & c? Например, скажем, что я разбираю один объект из XML и загружаю другой из прибора, и то, что я тестирую, заключается в том, что мой XML-парсер работает правильно. У меня в настоящее время есть специальный соединитель сСравнение объектов ActiveRecord с Rspec
actual.attributes.reject{|key,v| %w"id updated_at created_at".include? key } == expected.attributes.reject{|key,v| %w"id updated_at created_at".include? key }
Но мне интересно, есть ли лучший способ.
А потом немного сложнее, но есть ли способ сделать аналогичную вещь на набор? Скажем, что парсер XML также создает несколько объектов, принадлежащих оригинальному объекту. Таким образом, набор, который я заканчиваю, должен быть идентичным, кроме id, created_at, & c, и мне интересно, есть ли хороший способ проверить, что помимо просто езды на велосипеде, очистка этих переменных и проверка.
для меня это работает только с кавычками '[" id "," updated_at "," created_at "]' – zishe
Чтобы заставить его работать как со строками, так и с символами, вы можете использовать HashWithIndifferentAccess: 'actual.attributes.with_indifferent_access.except. ..'. – mrzasa
Я получаю 'undefined method' attributes'', когда я пытаюсь это сделать. Что может быть неправильным? –