Voici un moyen bon marché et facile (mais pas officiellement recommandé):
Faites un répertoire dans la racine de votre gemme appelé spec
, mettez vos spécifications là-dedans. Vous avez probablement déjà installé rspec, mais si vous ne le faites pas, faites simplement un gem install rspec
et oubliez Gemfiles et bundler.
Ensuite, vous allez créer une spécification, et vous devez lui indiquer où se trouve votre application, où se trouvent vos fichiers et inclure le fichier que vous souhaitez tester (ainsi que toutes les dépendances dont il dispose):
# 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
Ouvrez le Terminal et exécutez rspec:
~/awesome_gem $ rspec
..
Finished in 0.56 seconds
2 examples, 0 failures
Si vous voulez .rspec
aimer certaines options, allez créer un .rspec
fichier et placez-le dans le chemin racine de votre gemme. Le mien ressemble à ceci:
# .rspec
--format documentation --color --debug --fail-fast
Facile, rapide, soigné!
J'aime cela parce que vous n'avez pas du tout à ajouter de dépendances à votre projet, et le tout reste très rapide. bundle exec
ralentit un peu les choses, ce que vous devez faire pour vous assurer que vous utilisez la même version de rspec tout le temps. Ces 0,56 secondes qu'il a fallu pour exécuter deux tests ont été prises à 99% au moment où il a fallu à mon ordinateur pour charger rspec. L'exécution de centaines de spécifications devrait être extrêmement rapide. Le seul problème que vous pourriez rencontrer et dont je suis conscient est que si vous changez de version de rspec et que la nouvelle version n'est pas rétrocompatible avec une fonction que vous avez utilisée dans votre test, vous devrez peut-être réécrire certains tests.
C'est bien si vous faites des spécifications ponctuelles ou si vous avez une bonne raison de NE PAS inclure rspec dans votre gemspec, mais ce n'est pas très bon pour activer le partage ou appliquer la compatibilité.