2011-09-17 15 views
6

Voglio avere 'rake test: units' eseguire i test su un database di test preparato con successo mentre il mio database di sviluppo è inattivo. Attualmente i binari stanno provando a creare il database di test dal database di sviluppo. È possibile?Rails test attraverso rake: non toccare il mio database dev

Sono in una situazione in cui i miei database prod/dev non sono in hosting, ma ai fini delle unit test sto utilizzando un database sqlite in memoria.

EDIT per le mie azioni precise:Nota Sto usando Rails 2,3

mio database di prova è messa a punto come questo in config/database.yml:

test: 
    adapter: sqlite3 
    database: 'sqlite3_unittest_file.dat' 
    pool: 5 
    timeout: 5000 

Quando eseguo il rake db:test:load il database di test (che è solo un file) viene generato correttamente nella directory root-rails. E quando corro rake test:units, tutto funziona.

Ora, se modifico database.yml per impostare il mio banca dati DEV nome utente per qualcosa di sbagliato (come 'sdlkfj'), rake test:units fallisce immediatamente lamentarsi:

Access denied for user 'sdlkfj'@'myhostnsmae' (using password: YES) 

quando sono in esecuzione questa build 'per davvero' , Lo sto eseguendo in un sistema in cui le build non sono autorizzate a parlare off-box durante il processo di compilazione. Quindi questo tentativo di parlare al database di sviluppo e immediatamente gracidare mi sta uccidendo, e sembra scorretto.

+0

Normalmente i test dovrebbero funzionare senza un database di sviluppo in esecuzione. Dovresti dare un'occhiata alla sezione http://guides.rubyonrails.org/testing.html 3.1 e cambiare la tua domanda in modo che tu possa nominare i passaggi che fai. Sembra che il database di sviluppo sia necessario all'inizio e non è disponibile. – mliebelt

+0

Modificato per aggiungere ulteriori informazioni. –

risposta

7

provare a eseguire il compito rastrello con un ambiente esplicito:

rake test:units RAILS_ENV=test 

Se non si specifica un ambiente, development viene assunto, nella mia esperienza. E mentre il database di test contiene ancora i dati delle fixture inseriti, roba dall'ambiente development viene ancora referenziata per qualche motivo.

+0

Ha funzionato! Grazie mille. –

4

La causa di questo errore è dovuta al fatto che il test del rake: unità consente di verificare innanzitutto che il database di test sia configurato correttamente. Per fare questo, invoca 'rake db: test: prepara' quali copie sullo schema corrente dal database dev (questo è supposto per garantire che tutte le migrazioni siano state eseguite prima di eseguire i test).

Immagino si possa aggirare questo in alcuni modi, uno sta sovrascrivendo l'attività rake "db: test: preparare" che è stato suggerito in questo post su StackOverflow.

Problemi correlati