Como posso dizer ao Rails para usar o RSpec em vez da unidade de teste ao criar um novo aplicativo Rails?

152

Eu tenho test-unitinstalado e rspecinstalado (junto com -core, -expectations, -mockse -railsversão 2.6.x). Quando executo o comando rails new foo, ele é usado test-unitpara gerar os arquivos stub de teste em vez de rspec.

Existe uma opção em que eu possa dizer ao Rails para usar o rspec para gerar os testes?

aarona
fonte

Respostas:

262

O seguinte deve funcionar:

na linha de comando:

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

em Gemfile:

gem 'rspec-rails'

na linha de comando:

bundle install
rails g rspec:install
Zabba
fonte
Eu acho que alguns desses passos estão fora de ordem, não? Parece que isso funcionaria se feito na ordem certa. Edite sua resposta e eu a marcarei como aceita.
AaronA
60
Você não precisa do generator.rbinicializador, isso é tratado pela ferrovia do RSpec. Tudo o que você precisa está rspec-railsdentro do developmentgrupo Gemfilesuficiente para exigir isso para os geradores. Você também não precisa gerar o aplicativo -T, pode excluir o testdiretório e ele funcionará.
Ryan Bigg
1
Você pode editar o código da g.test_framework =: rspec para g.test_framework: rspec
Deepak Lamichhane
8
@RyanBigg: com a opção -T vamos ter "rails/test_unit/railtie"comentado emapplication.rb
Giang Nguyen
13
Quando você adiciona a rspec-railsgema, é importante colocá-la em teste e desenvolvimento, ou os geradores não usarão o RSpec, mesmo se você seguir as etapas acima.
februaryInk
73

Crie seu novo aplicativo rails como:

rails new <app_name> -T

Ou remova seu testdiretório do aplicativo existente:

rm -rf test/

Faça uma entrada no seu Gemfile:

gem 'rspec-rails'

Na linha de comando, instale a gema

$ bundle install

Na linha de comando, instale o rspec no seu aplicativo:

$ rails g rspec:install

Agora, seu aplicativo de trilhos usa o RSpec em vez da unidade de teste.

Sayuj
fonte
2
A etapa 'instalação do pacote' estava ausente nessa lista. Adicionado.
Cczona 29/10/12
6

Depois de criar seu aplicativo rails com:

rails new <app_name> -T  # to exclude Test::Unit

Adicione a gema RSpec ao seu Gemfile da seguinte maneira:

group :development, :test do
  gem "rspec-rails"
end

Na linha de comando, escreva:

bundle install  # this will install the missing gems

Agora você precisa instalar o RSpec executando:

rails generate rspec:install

Isso irá gerar os seguintes arquivos:

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

É altamente recomendável ler todos os comentários spec_helper e rails_helper para entender melhor o que cada opção faz.

Depois que tudo estiver definido, você poderá executar todos os seus testes com:

bundle exec rspec

Você pode ler mais sobre as configurações recomendadas spec_helper e rails_helper em https://kolosek.com/rails-rspec-setup .

Nesha Zoric
fonte
4

Sou um novo desenvolvedor e acabei de fazer um sinalizador de trilhos (-rspec) para resolver o problema do OP. Ele se livra do Test :: Unit e insere a gema rails-rspec com um script bash. O script pode ser modificado para ajudar os desenvolvedores do Linux, adicionando automaticamente o therubyracer gem ou criando flags e gemsets personalizados. (talvez vá especificamente para a linha da gema e exclua o comentário)

Aqui está a essência && Espero que isso ajude alguém por aí. https://gist.github.com/MTen/8310116

MTen
fonte
0

Não há maneira nativa de fazer isso com a railsCLI. Gere um novo projeto sem test-unit:

rails new rails-app --skip-test

E siga as rspecinstruções para integrá-lo ao novo aplicativo Rails.

thisismydesign
fonte