Pergunta

Eu quero ser capaz de executar testes de um único arquivo de especificações - para o arquivo que eu estou editando, por exemplo. rake spec executa todas as especificações. Meu projeto não é um projeto Rails, então rake spec:doc não funciona.

Não sei se isso importa, mas aqui é a minha estrutura de diretório.

./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
Foi útil?

Solução

Ou você pode pular ancinho e usar o comando 'rspec':

rspec path/to/spec/file.rb

No seu caso eu acho que enquanto seu arquivo ./spec/db_spec.rb inclui os auxiliares apropriados, ele deve funcionar bem.

Se você estiver usando uma versão mais antiga do rspec é:

spec path/to/spec/file.rb

Outras dicas

A invocação cru:

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

Agora, descobrir como incorporar isso em seu editor.

Esta questão é antiga, mas mostra-se no topo do Google na busca de como executar um único teste. Eu não sei se é uma adição recente, mas para executar um único teste a partir de uma especificação que você pode fazer o seguinte:

rspec path/to/spec:<line number>

onde número- -line é um número de linha que contém parte de seu teste. Por exemplo, se você tivesse uma especificação como:

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

Vamos dizer que ele é salvo em especificação / modelos / foo_spec.rb. Então você teria que executar:

rspec spec/models/foo_spec.rb:2

e que seria apenas executar que um spec. Na verdade, esse número pode ser qualquer coisa de 2 a 5.

Espero que isso ajude!

Você também pode usar o texto real do * e * caso de teste xample com -e!

Assim, para:

it "shows the plane arrival time"

Você pode usar

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'

Não há necessidade de ancinho aqui.

de ajuda (especificação -h):

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

Exemplo: especificação spec / runner_spec.rb -l 162

Se você instalou rspec como um plugin e não como uma jóia, então você não vai ter o executável spec.

De qualquer forma, Tudo que você precisa fazer é executar o arquivo usando Ruby. O código rspec é suficiente inteligente para executar os testes para você.

por exemplo:

ruby myclass_spec.rb

http://github.com/grosser/single_test permite fazer coisas como ..

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

Rubi 1.9.2 e Rails 3 têm uma maneira fácil de executar um arquivo spec:

  ruby -I spec spec/models/user_spec.rb

Explicação:

  • comando ruby tende a ser mais rápido do que o comando rake
  • meios -I spec "incluir o diretório 'especificação' quando se olha para os arquivos"
  • spec/models/user_spec.rb é o arquivo que deseja executar.

Para executar todas de seus arquivos rspec: rspec

Nota: Você deve estar na raiz do seu projeto

Para executar um arquivo rspec: rspec 'path_to/spec.rb'

Nota: Substitua 'path_to / spec.rb' com o seu caminho. Aspas opcional.

Para executar um rspec test de um arquivo: rspec 'path_to/spec.rb:7'

Nota:: 7 é o número da linha onde o teste começa

Eu estava tendo problemas para obter qualquer um destes exemplos para trabalho, talvez porque o post é antigo e os comandos mudaram?

Depois de alguns picar ao redor eu encontrei isso funciona:

especificação rspec / modelos / user_spec.rb

Isso vai executar apenas o arquivo único e fornece uma saída útil no terminal.

specky.vim

Como alternativa, ter um olhar para autoteste.

Running autoteste em uma janela de comando significa que o arquivo de especificações será executado sempre que você salvá-lo. Além disso, ele será executado sempre que o arquivo que você está speccing é executado.

Por exemplo, se você tem um arquivo de modelo de especificação chamada person_spec.rb, e um arquivo de modelo que é speccing chamado person.rb, então sempre que você salvar qualquer um desses arquivos de seu editor, o arquivo de especificações será executado.

Vamos dizer, você está executando teste para a criação de tarefas. Você sempre pode executar esse específico TODO código especificação usando o arquivo de arquivo crete_spec.rb como abaixo.

      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 você deseja executar todas as especificações em um único curto.

   rspec 

Se você deseja executar todas as especificações em um usuário do controlador específico isto.

  rspec/spec/feaures/controller_name

  Example:   rspec/spec/features/todos

Hope dá-lhe mais compreensão!

Apesar de muitos grandes respostas foram escritas para esta pergunta, nenhum deles usa o Rspec abordagem tags .

Eu uso tags para executar uma ou mais especificações em diferentes arquivos - apenas aqueles relacionados a minha tarefa atual de desenvolvimento

.

Por exemplo, eu adicionar a tag "dev" com o valor "atual":

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

então eu corro

bundle exec rspec . --tag dev:current

Diferentes tags / valores podem ser definidos nas especificações individuais ou grupos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top