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 um gem 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):
# spec/awesome_gem/awesome.rb
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
$: << File.join(APP_ROOT, 'lib/awesome_gem') # so rspec knows where your file could be
require 'some_file_in_the_above_dir' # this loads the class you want to test
describe AwesomeGem::Awesome do
before do
@dog = AwesomeGem::Awesome.new(name: 'woofer!')
end
it 'should have a name' do
@dog.name.should eq 'woofer!'
end
context '#lick_things' do
it 'should return the dog\'s name in a string' do
@dog.lick_things.should include 'woofer!:'
end
end
end
Abra o Terminal e execute o rspec:
~/awesome_gem $ rspec
..
Finished in 0.56 seconds
2 examples, 0 failures
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:
# .rspec
--format documentation --color --debug --fail-fast
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.