Pregunta

He estado trabajando a través de los tutoriales en estutorial de ferrocarril.org, y el código del autor del autor me quedé un poco perplejo para la sección 6.2.1 Validación de la presencia.

En el modelo de usuario, el tutorial agrega validates :name, :presence => true. Suficientemente simple.

Cuando el autor elige escribir la prueba RSPEC, hace algo que pensé que era un poco extraño.

describe User do

 before(:each) do
   @attr = { :name => "Example User", :email => "user@example.com" }
 end
 .
 .
 .
 it  "should require a name" do
  no_name_user = User.new(@attr.merge(:name => ""))
  no_name_user.should_not be_valid
 end

end

¿Por qué pasar por la molestia de fusionar una cadena en blanco para @attr Cuando uno podría deshacerse de: cada declaración de bloque y simplemente escribir:

it "should require a name" do
  no_name_user = User.new(:name => "", :email => "user@example.com")
  no_name_user.should_not be_valid
end

Sé que el autor usa el @attr Variable para validar la presencia de la dirección de correo electrónico también, que es una indicación de por qué utilizó la declaración de bloque; para mí, tiene más sentido seguir la estructura de la segunda cita de bloque. Aún así, tengo la sensación de que hay algo que me falta aquí.

Otra explicación que me pasó por la mente es que ayuda a usar el @attr Estructura Cuando hay muchas claves para ingresar, en oposición a este caso bastante simplista de solo nombre y correo electrónico.

¿Alguien tiene alguna entrada?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top