2010-05-18 16 views
9

Tenemos un gran proyecto de varios desarrolladores bajo Rails en el que estamos usando pruebas tanto para modelos como para controladores. En este momento, los desarrolladores tienen que cambiar los parámetros de DB para el entorno de "prueba" para que coincida con sus entornos de desarrollo local antes de ejecutar las pruebas. Me pregunto si hay una manera de ejecutar esas pruebas en cualquier entorno que no sea 'prueba'.¿Se pueden ejecutar las pruebas de la unidad Can Rails en un entorno diferente al de la prueba?

por ejemplo tenemos en database.yml:

test: 
    database: ... 
    host: ... 
    username: ... 
    password: ... 
... 
dev-one: 
    ... 
dev-two: 
    ... 

no puedo encontrar nada en la documentación sobre esto, pero quizás estoy buscando en el lugar equivocado. ¿Algunas ideas?

Gracias!

+0

marco Qué pruebas se utilizan? –

+0

Estamos utilizando la unidad básica de Test ::, nada más allá de eso. Nuestras necesidades de prueba son bastante simples y tocamos más en la lógica del controlador que nada, pero el marco no permitirá (por lo que puedo ver) ejecutar pruebas funcionales sin arrancar la capa de la base de datos. Tenga en cuenta que no soy muy desarrollador de Ruby/Rails, así que esto es nuevo para mí ... – futureal

+0

¿Tiene un 'database.yml' para todos los desarrolladores? ¿Por qué no dejas que cada desarrollador cree su propio 'database.yml'? Yo recomendaría usar diferentes 'database.yml' para cada desarrollador. – jigfox

Respuesta

0

Solo es cuestión de especificar explícitamente el entorno cuando va a ejecutar las pruebas. Solo necesitas un par de preparativos de antemano.

Digamos que su nuevo entorno se llamará "testjohn" (presumiblemente para un desarrollador llamado John). Entonces:

1- Copia config/ambientes/test.rb a config/ambientes/testjohn.rb

2- Añadir el correspondiente estrofa DB a config/database.yml (copiarlo de la estrofa de prueba, renómbrela, y luego cambie el nombre de la base de datos, la contraseña y otros datos). Mi (más bien simplista) utiliza este ejemplo:

testjohn: 
    adapter: sqlite3 
    database: db/testjohn.sqlite3 
    pool: 5 
    timeout: 5000 

3- ejecutar las pruebas de la siguiente manera:

RAILS_ENV="testjohn" rake db:migrate 
RAILS_ENV="testjohn" rake test:units 

Por cierto, ya que RAILS_ENV es sólo una variable de entorno, es posible que tenga una secuencia de comandos que establece que de antemano, o incluso que cada desarrollador configure su propia variable RAILS_ENV en su .profile o cualquier archivo. De esta forma, simplemente ejecutan prueba de rake: unidades y las pruebas se ejecutan automágicamente en su entorno personalizado.

+2

Apreciar la respuesta, sin embargo, eso es exactamente lo que he intentado y no funciona. El entorno que especifique en RAILS_ENV está realmente cargado en el contexto de la tarea de rake, sin embargo, una vez que ruby ​​ejecuta las pruebas, cambia silenciosamente a su entorno de prueba y purga la base de datos de prueba y carga los dispositivos. Después de más investigaciones, parece que este comportamiento está muy codificado dentro de Test :: Unit y estoy abandonando la posibilidad. Pero aún muy abierto a sugerencias. – futureal

+1

también lo intentó, no funciona – Joshua

Cuestiones relacionadas