Domanda

Voglio essere in grado di eseguire i test di un singolo file di specifiche, ad esempio per il file che sto modificando. rake spec esegue tutte le specifiche. Il mio progetto non è un progetto Rails, quindi rake spec: doc non funziona.

Non so se questo è importante, ma ecco la mia struttura di directory.

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb
È stato utile?

Soluzione

Oppure puoi saltare il rake e usare il comando 'rspec':

rspec path/to/spec/file.rb

Nel tuo caso, penso che fintanto che il tuo file ./spec/db_spec.rb include gli helper appropriati, dovrebbe funzionare bene.

Se stai usando una versione precedente di rspec è:

spec path/to/spec/file.rb

Altri suggerimenti

L'invocazione non elaborata:

rake spec SPEC=spec/controllers/sessions_controller_spec.rb \
          SPEC_OPTS="-e \"should log in with cookie\""

Ora scopri come incorporarlo nel tuo editor.

Questa domanda è vecchia, ma viene visualizzata nella parte superiore di Google quando si cerca come eseguire un singolo test. Non so se si tratta di un'aggiunta recente, ma per eseguire un singolo test su una specifica è possibile effettuare le seguenti operazioni:

rspec path/to/spec:<line number>

dove -line number- è un numero di riga che contiene parte del test. Ad esempio, se avessi una specifica come:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

Diciamo che è stato salvato in spec / models / foo_spec.rb. Quindi eseguiresti:

rspec spec/models/foo_spec.rb:2

e avrebbe semplicemente eseguito quella specifica. In realtà, quel numero potrebbe essere compreso tra 2 e 5.

Spero che questo aiuti!

Puoi anche usare il testo effettivo del test case * e * xample con -e !

Quindi per:

it "shows the plane arrival time"

puoi usare

rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'

non c'è bisogno di rastrellare qui.

dalla guida (spec -h):

-l, --line LINE_NUMBER           Execute example group or example at given line.
                                 (does not work for dynamically generated examples)

Esempio: spec spec / runner_spec.rb -l 162

Se hai installato rspec come plugin anziché come gemma, non avrai l'eseguibile spec .

Ad ogni modo, tutto ciò che devi fare è eseguire il file usando ruby. Il codice rspec è abbastanza intelligente da eseguire i test per te.

es:

ruby myclass_spec.rb

http://github.com/grosser/single_test ti permette di fare cose come ..

rake spec:user          #run spec/model/user_spec.rb (searches for user*_spec.rb)
rake test:users_c       #run test/functional/users_controller_test.rb
rake spec:user:token    #run the first spec in user_spec.rb that matches /token/
rake test:user:token    #run all tests in user_test.rb that match /token/
rake test:last
rake spec:last

Ruby 1.9.2 e Rails 3 hanno un modo semplice per eseguire un file spec:

  ruby -I spec spec/models/user_spec.rb

Spiegazione:

    Il comando
  • ruby ?? tende ad essere più veloce del comando rake
  • -I spec significa " includere la directory 'spec' quando si cercano file "
  • spec / models / user_spec.rb è il file che vogliamo eseguire.

Per eseguire tutti i tuoi file rspec: rspec

nota: devi essere alla radice del tuo progetto

Per eseguire un file rspec: rspec 'path_to / spec.rb'

nota: sostituisci 'path_to / spec.rb' con il tuo percorso. Virgolette facoltative.

Per eseguire uno rspec test da un unico file: rspec 'path_to / spec.rb: 7'

nota:: 7 è il numero di riga in cui inizia il test

Ho avuto problemi a far funzionare uno di questi esempi, forse perché il post è vecchio e i comandi sono cambiati?

Dopo aver frugato in giro ho scoperto che funziona:

rspec spec / models / user_spec.rb

Questo eseguirà solo il singolo file e fornirà un utile output nel terminale.

specky.vim

In alternativa, dai un'occhiata all'autotest.

L'esecuzione dell'autotest in una finestra di comando implica che il file delle specifiche verrà eseguito ogni volta che lo si salva. Inoltre, verrà eseguito ogni volta che viene eseguito il file che stai ipotizzando.

Ad esempio, se si dispone di un file di specifiche del modello chiamato person_spec.rb e di un file di modello che sta speculando chiamato person.rb, ogni volta che si salva uno di questi file dal proprio editor, verrà eseguito il file di specifiche.

Diciamo che stai eseguendo un test per la creazione di todo. Puoi sempre eseguire quel codice specifico todo specifico usando il file crete_spec.rb come di seguito.

      rspec/spec/features/controller/spec_file_name.rb

   Example:

   Creating  rspec spec/features/todos/create_spec.rb
   Editing   rspec spec/features/todos/edit_spec.rb
   Deleting  rspec spec/features/todos/destroy_spec.rb

Se si desidera eseguire tutte le specifiche in un singolo short.

   rspec 

Se si desidera eseguire tutte le specifiche in un utente controller specifico questo.

  rspec/spec/feaures/controller_name

  Example:   rspec/spec/features/todos

Spero che ti dia più comprensione!

Sebbene siano state scritte molte grandi risposte a questa domanda, nessuna di esse utilizza approccio Rspec tag .

Uso i tag per eseguire una o più specifiche in file diversi, solo quelli relativi alla mia attuale attività di sviluppo.

Ad esempio, aggiungo il tag " dev " con il valore " corrente " ;:

it "creates an user", dev: :current do
  user = create(:user)
  expect(user.persisted?).to be_truthy
end

poi corro

bundle exec rspec . --tag dev:current

È possibile impostare tag / valori diversi in singole specifiche o gruppi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top