É muito fácil, com o gerador adicionado de rspec-rails, configurar o RSpec para testar um aplicativo Rails. Mas que tal adicionar o RSpec para testar uma jóia no desenvolvimento? Eu não estou usando joalheiro ou tais ferramentas. Acabei de usar o Bundler ( bundle gem my_gem
) para configurar a estrutura da nova gema e editar o * .gemspec manualmente. Eu também adicionei s.add_development_dependency "rspec", ">= 2.0.0"
ao gemspec e fiz a bundle install
.
Existe algum tutorial interessante sobre o que fazer a seguir para que o RSpec funcione?
Respostas:
Atualizei esta resposta para corresponder às práticas recomendadas atuais:
Bundler suporta perfeitamente o desenvolvimento de gemas. Se você estiver criando uma gema, a única coisa que você precisa ter no seu Gemfile é a seguinte:
Isso diz ao Bundler para procurar dentro do seu arquivo gemspec as dependências quando você executar
bundle install
.Em seguida, verifique se o RSpec é uma dependência de desenvolvimento da sua gema. Edite o gemspec para que ele leia:
Em seguida, crie
spec/spec_helper.rb
e adicione algo como:As duas primeiras linhas dizem ao Bundler para carregar apenas as gemas dentro do seu gemspec. Quando você instala sua própria joia em sua própria máquina, isso forçará suas especificações a usar seu código atual, não a versão que você instalou separadamente.
Crie uma especificação, por exemplo
spec/foobar_spec.rb
:Opcional: adicione um
.rspec
arquivo para as opções padrão e coloque-o no caminho raiz da sua jóia:Finalmente: execute as especificações:
fonte
rspec --init
rspec --init
não estava disponível quando eu escrevi isso, mas bom ponto!A solução de Iain acima funciona muito bem!
Se você também deseja um Rakefile, é tudo o que precisa:
Verifique o RDoc do RakeTask para obter várias opções que você pode opcionalmente passar para a definição da tarefa.
fonte
Você pode gerar sua nova gema com o rspec executando
bundler gem --test=rspec my_gem
. Nenhuma configuração adicional!Eu sempre esqueço isso. É implementado aqui: https://github.com/bundler/bundler/blob/33d2f67d56fe8bf00b0189c26125d27527ef1516/lib/bundler/cli/gem.rb#L36
fonte
--test=rspec
, mas ainda me perguntou se eu queria usar o Rspec quando corriabundler gem my_gem
.Aqui está uma maneira barata e fácil (embora não oficialmente recomendada):
Faça um dir na raiz da sua gema chamada
spec
, coloque suas especificações lá. Você provavelmente já possui o rspec instalado, mas se não o fizer, faça umgem install rspec
e esqueça o Gemfiles e o bundler.Em seguida, você fará uma especificação e precisará informar onde está seu aplicativo, onde estão seus arquivos e incluir o arquivo que deseja testar (junto com todas as dependências existentes):
Abra o Terminal e execute o rspec:
Se você quer algumas
.rspec
opções, crie um.rspec
arquivo e coloque-o no caminho raiz da sua jóia. O meu fica assim:Fácil, rápido, limpo!
Eu gosto disso porque você não precisa adicionar nenhuma dependência ao seu projeto e a coisa toda permanece muito rápida.
bundle exec
diminui um pouco as coisas, e é isso que você precisa fazer para garantir que você esteja usando a mesma versão do rspec o tempo todo. Aqueles 0,56 segundos necessários para executar dois testes foram 99% utilizados no momento em que meu computador levou para carregar o rspec. A execução de centenas de especificações deve ser extremamente rápida. O único problema em que você pode se deparar é que, se você alterar as versões do rspec e a nova versão não for compatível com algumas funções usadas em seu teste, talvez seja necessário reescrever alguns testes.Isso é bom se você estiver executando especificações únicas ou tiver algum bom motivo para NÃO incluir o rspec no seu gemspec, no entanto, não é muito bom para ativar o compartilhamento ou reforçar a compatibilidade.
fonte
Thing = AwesomeGem::Awesome
ou você pode fazer o teste dentro de um módulo, comomodule AwesomeGem; it 'stuff' do; Awesome.new ... end; end