¿Hay una buena manera en Rspec para comparar dos objetos ActiveRecord mientras se ignora la identificación, & c? Por ejemplo, supongamos que estoy analizando un objeto desde XML y cargando el otro desde un dispositivo, y lo que estoy probando es que mi analizador XML funciona correctamente. Lo que tengo actualmente es un marcador personalizado conComparación de objetos ActiveRecord con 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 }
Pero me pregunto si hay una manera mejor.
Y luego un poco más complicado, pero ¿hay alguna manera de hacer algo similar en un conjunto de ? Diga que dicho analizador XML también crea varios objetos que pertenecen al objeto original. Por lo tanto, el conjunto con el que estoy terminando debería ser idéntico, excepto ID, created_at, & c, y me pregunto si hay una buena forma de probarlo más allá del ciclismo, la eliminación de esas variables y la comprobación.
para mí solo funciona con comillas '[" id "," updated_at "," created_at "]' – zishe
Para que funcione tanto con cadenas como con símbolos, puede usar HashWithIndifferentAccess: 'real.attributes.with_indifferent_access.except. ..'. – mrzasa
Obtengo 'atributos' de método indefinido' cuando intento esto. ¿Qué puede estar mal? –