Ось дешевий і простий (хоча офіційно не рекомендований) спосіб:
Зробіть реж у корені дорогоцінного каменю, який називається spec
, покладіть там свої характеристики. Напевно ви вже встановили rspec, але якщо цього не зробите, просто зробіть gem install rspec
і забудьте Gemfiles та постачальник.
Далі ви зробите специфікацію, і вам потрібно вказати, де ваша програма, де є ваші файли, і включити файл, який ви хочете перевірити (разом з усіма залежностями, які він має):
# 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, однак це не дуже добре для включення спільного використання або забезпечення сумісності.