İşte ucuz ve kolay (resmi olarak tavsiye edilmese de) bir yol:
Mücevher kök denilen bir dir yapmak, spec
oraya özellikleri koymak. Muhtemelen zaten rspec yüklüdür, ancak eğer yapmazsanız, sadece gem install rspec
yapın ve Gemfiles ve bundler'ı unutun.
Ardından, bir spesifikasyon yapacaksınız ve uygulamanızın nerede olduğunu, dosyalarınızın nerede olduğunu ve test etmek istediğiniz dosyayı (sahip olduğu bağımlılıklarla birlikte) belirtmeniz gerekir:
# 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
Terminal'i açın ve rspec'i çalıştırın:
~/awesome_gem $ rspec
..
Finished in 0.56 seconds
2 examples, 0 failures
Bazı .rspec
seçeneklerin sevilmesini istiyorsanız , bir .rspec
dosya yapın ve geminizin kök yoluna koyun. Benimki şöyle:
# .rspec
--format documentation --color --debug --fail-fast
Kolay, hızlı, temiz!
Bunu sevdim çünkü projenize hiç bağımlılık eklemek zorunda değilsiniz ve her şey çok hızlı kalıyor. bundle exec
işleri biraz yavaşlatır, bu da rspec'in aynı sürümünü her zaman kullandığınızdan emin olmak için yapmanız gereken şeydir. İki testin çalıştırılması 0,56 saniye, bilgisayarımın rspec'i yüklemesi zamanına kadar% 99 oranında alındı. Yüzlerce teknik özellik çok hızlı olmalı. Farkına varabileceğiniz tek sorun, rspec sürümlerini değiştirirseniz ve yeni sürüm, testinizde kullandığınız bazı işlevlerle geriye dönük olarak uyumlu değilse, bazı testleri yeniden yazmanız gerekebilir.
Tek seferlik spesifikasyonlar yapıyorsanız veya gspspec'inize rspec'i dahil etmemek için iyi bir nedeniniz varsa, bu güzeldir, ancak paylaşımı veya uyumluluğu zorlamak için çok iyi değildir.