Después de investigar un poco, descubrí que no hay forma de hacer esto. Las tareas de rake de prueba siempre soltarán la base de datos, incluso cuando proporcione la opción TEST=
, como sugiere Bohdan.
Al usar la opción --trace
, esto puede ser probado. Aquí está la salida:
$ rake test:units TEST=test/unit/post_test.rb --trace
(in /Users/johnnyicon/Development/ror/test-app)
** Invoke test:units (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment
** Execute db:test:purge
** Execute db:test:load
** Invoke db:schema:load (first_time)
** Invoke environment
** Execute db:schema:load
** Execute test:prepare
** Execute test:units
lectura a través de la Ruby on Rails Guides for Testing, que describe lo que algunas de estas tareas significa rastrillo. A la que debe prestar especial atención es a la tarea db:test:load
, que verá en la 7ma línea desde la parte inferior de la salida como ** Execute db:test:load
. Las guías dicen lo siguiente acerca de esta tarea:
recrear la base de datos de prueba desde el schema.rb actual
Así que incluso si tuviera que ejecutar la unidad de prueba, uno por uno, como sugiere Bohdan, la la tarea de rake aún recrearía la base de datos. No era la respuesta que esperaba, pero ya no es un problema.
La razón por la que pedí comenzar fue porque no tenía acceso a otra base de datos para usarla para las pruebas, así que también estaba usando mi base de datos de desarrollo para realizar pruebas. Pero desde entonces, he podido obtener otra base de datos dedicada para probar.
Gracias de todos modos Bohdan! Aprecio la ayuda!
Me alegro de escucharlo. Su base de datos de prueba * debe * borrarse cada vez que ejecute pruebas, de lo contrario sus pruebas serán inexactas. –