Tengo la siguiente validación en mi ActiveRecord.Cómo puedo probar: validación de inclusión en Rails usando RSpec
validates :active, :inclusion => {:in => ['Y', 'N']}
Estoy utilizando lo siguiente para probar las validaciones de mi modelo.
should_not allow_value('A').for(:active)
should allow_value('Y').for(:active)
should allow_value('N').for(:active)
¿Hay un limpiador y más a través de la forma de probar esto? Actualmente estoy usando RSpec2 y debería corresponder.
EDITAR
Después de algún mirando a su alrededor sólo he encontrado, esto probablemente una forma 'bien' de pruebas de esta, la debería no proporciona nada de esto y cualquier persona que lo requiera puede escribir su propio matcher personalizado para ello . (Y probablemente contribuir de nuevo al proyecto). Algunos enlaces a discusiones que podrían ser interesantes:
should_ensure_value_in_range
Este viene cerca de lo que se puede utilizar, pero sólo acepta rangos y no una lista de valores. El emparejador personalizado se puede basar en esto.
Para comprobar que no permite otros valores, puede hacer algo como: 'it {should_not allow_value ('?'). For (: active)}' - como dijo, no puede verificar todos los valores posibles, pero haciendo esto además de verificar todos los valores permitidos parece una cobertura razonable. – bjnord
El shoulda_matcher al que se refirió ** funciona ** como lo indicó originalmente, es decir, no permite valores que no estén en la matriz proporcionada. [Ver documentación] (https://github.com/thoughtbot/shoulda-matchers#ensure_inclusion_of). Para una buena medida, probé esto en una aplicación de Rails y funciona correctamente. –
@LarsLevie - Gracias por el comentario. Parece que cambiaron la validación para comprobar 'disallows_value_outside_of_array?'. Mira el viejo https://github.com/thoughtbot/shoulda-matchers/blob/v1.2.0/lib/shoulda/matchers/active_model/ensure_inclusion_of_matcher.rb#L86 vs ahora https://github.com/thoughtbot/shoulda- matchers/blob/15abdf066732828034efea751c2937aa81d080fe/lib/shoulda/matchers/active_model/ensure_inclusion_of_matcher.rb # L90 –