Mi problema surgió en el Capítulo 11 del Tutorial de Ruby on Rails here.Tutorial de Rails 3 Capítulo 11 "Error de validación: el correo electrónico ya se ha tomado" error
que estaba viendo este error rspec:
Failure/Error: :user => Factory(:user, :email => Factory.next(:email)))
ActiveRecord::RecordInvalid:
Validation failed: Email has already been taken
por primera vez en user_spec.rb
después en micropost_spec.rb
. Fue bastante desconcertante. Pensé que las declaraciones de fábrica generaban un usuario en una nueva prueba db cada vez que autotest ejecutaba rspec. Revisé los archivos fuente de la rama principal con git e intenté de nuevo, pero vi el mismo error. Por lo tanto, sospeché que estaba relacionado con los contenidos de db de alguna manera y no con el código.
Por lo tanto, hice lo siguiente:
restarted "rails s"
restarted autotest
rake db:reset
rake db:migrate
rake db:test:prepare
rake db:populate
... y todo se volvió verde. Las pruebas rspec pasaron.
Puede haber una solución más "al punto", pero estaba encantado de que esto funcionara. Espero que ayude a alguien más. Me queda la conclusión de que mi prueba/desarrollo de alguna manera agregó algo al db que fue inesperado. Supongo que los pasos anteriores son una buena forma de obtener un db nuevo al final del capítulo 11.
¿Hubo una forma más directa de resolver esto? ¿El error indica algún otro problema que abordé sin darme cuenta? Me queda la idea de que ejecutar rspec no garantiza un nuevo DB de prueba cada vez. ¿Es esa una suposición incorrecta?
No había ninguna pregunta aquí ... Este es un sitio de pregunta respuesta =>. Es perfectamente aceptable hacer una pregunta y luego responderla usted mismo, pero la forma en que lo ha hecho no es correcta :( – nzifnab
nzifnab está en lo cierto. Mi post es principalmente una afirmación que, sin embargo, esperaba que fuera útil para algunos Cerré con una pregunta genuina: "Si alguien más pudiera arrojar algo de luz aquí, supongo que eso también sería bueno". Mi 'solución' fue algo así como un enfoque a toda máquina.Todavía no estoy seguro de lo que estaba mal, pero la receta anterior podría ser una solución práctica para aquellos que se sienten cómodos viviendo en la oscuridad. –
Veo tu punto. Podría haber publicado esto como "Tengo errores rspec desconcertantes en el Capítulo 11 ..." Y luego también publicó mi propia respuesta con comentarios. Lo siento. La próxima vez. Si no hubieran sido las 4:00 a.m. hora local, podría haber pensado en esa primera vuelta. P. –