2011-08-21 12 views
5

Mi chiedevo se avrei potuto eseguire i miei test nella console di rails piuttosto che nella riga di comando. In realtà la logica di questo è il rake test: unità sulla riga di comando impiegano anni per caricare l'ambiente delle rotaie. Così ho pensato, perché non avviare una console per caricare l'ambiente una volta e poi continuare a girare l'unità di rake: test ogni volta che volevo controllare il mio codice. Dopotutto, i binari devono essere agili e promuovere uno sviluppo agile. Così ho provato questo. Prima di tutto ho dovuto dire:Test console e rake Rails: unità

richiedono 'rake'

ma anche dopo aver fatto che ho ottenuto il messaggio di errore:

irb(main):002:0> Rake::Task['test.units'].invoke 
RuntimeError: Don't know how to build task 'test.units' 

Credo che ho bisogno di dire in qualche modo dove guardare. qualche idea?

Grazie

Chris

risposta

5
ruby-1.9.2-p290 :001 > require 'rake' 
ruby-1.9.2-p290 :002 > r = Rake.application 
ruby-1.9.2-p290 :003 > r.init 
ruby-1.9.2-p290 :004 > r.load_rakefile 
ruby-1.9.2-p290 :005 > r['test:units'].invoke 
+1

Grazie, ha funzionato la prima volta (ma in realtà ci sono voluti ancora anni per essere eseguito) e quindi restituito nil quando ho provato a eseguire r ['test: units']. Richiamare di nuovo. Penso che guarderò Spork. – Chris

+1

In realtà, aggiungendo r.clear mi consente di ripetere r.load_rakefile e r ['test: units']. Richiamare di nuovo. Il tempo di eseguirlo sul mio computer è stato ridotto da 80 secondi (rake sulla linea di comando) a 25 secondi, quindi un miglioramento sostanziale, sebbene ancora piuttosto lento. – Chris

0

Un'idea migliore è quella di utilizzare Spork per mantenere l'ambiente caricato e poi Autotest per eseguire automaticamente i test quando i file cambiano.

+0

Sì, penso che questa sia la strada da percorrere. Tuttavia, sto usando RoR in un piccolo modulo uni e non voglio dover parlare di rspec e di altre cose non trattate dal libro Agile Software Development with Rails. Mi chiedo se il bundle core rails debba passare a spork, ecc. Sembra un po 'strano che includa ancora la tecnologia di testing che è troppo lenta per TDD. – Chris