Вот дешевый и простой (хотя официально не рекомендованный) способ:
Сделайте dir в корне вашего драгоценного камня под названием spec
, поместите туда свои спецификации. Возможно, вы уже установили rspec, но если вы этого не сделаете, просто сделайте a gem install rspec
и забудьте Gemfiles и bundler.
Затем вы создадите спецификацию, и вам нужно указать ей, где находится ваше приложение, где находятся ваши файлы, и включить файл, который вы хотите протестировать (вместе со всеми имеющимися у него зависимостями):
# 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
Откройте Терминал и запустите rspec:
~/awesome_gem $ rspec
..
Finished in 0.56 seconds
2 examples, 0 failures
Если вам нужны некоторые .rspec
параметры, создайте .rspec
файл и поместите его в корневой каталог вашего драгоценного камня. Моя выглядит так:
# .rspec
--format documentation --color --debug --fail-fast
Легко, быстро, аккуратно!
Мне это нравится, потому что вам вообще не нужно добавлять никаких зависимостей в ваш проект, и все это остается очень быстрым. bundle exec
немного замедляет работу, что вам нужно сделать, чтобы убедиться, что вы используете одну и ту же версию rspec все время. Те 0,56 секунды, которые потребовались для запуска двух тестов, заняли 99% к тому времени, которое потребовалось моему компьютеру для загрузки rspec. Запуск сотен спецификаций должен быть чрезвычайно быстрым. Единственная проблема, с которой вы можете столкнуться, это то, о чем я знаю, если вы измените версии rspec, и новая версия не будет обратно совместима с какой-то функцией, которую вы использовали в своем тесте, вам, возможно, придется переписать некоторые тесты.
Это хорошо, если вы выполняете разовые спецификации или у вас есть веская причина НЕ включать rspec в ваш gemspec, однако это не очень хорошо для обеспечения совместного использования или обеспечения совместимости.