Sangat mudah dengan tambahan generator rspec-rails untuk mengatur RSpec untuk menguji aplikasi Rails. Tetapi bagaimana dengan menambahkan RSpec untuk menguji permata dalam pengembangan? Saya tidak menggunakan perhiasan atau alat semacam itu. Saya baru saja menggunakan Bundler ( bundle gem my_gem
) untuk mengatur struktur untuk permata baru dan mengedit * .gemspec secara manual. Saya juga menambahkan s.add_development_dependency "rspec", ">= 2.0.0"
ke gemspec dan melakukan bundle install
.
Apakah ada tutorial yang bagus apa yang harus dilakukan selanjutnya agar RSpec berfungsi?
Jawaban:
Saya telah memperbarui jawaban ini untuk mencocokkan praktik terbaik saat ini:
Bundler mendukung pengembangan permata dengan sempurna. Jika Anda membuat permata, satu - satunya hal yang perlu Anda miliki di Gemfile adalah sebagai berikut:
Ini memberitahu Bundler untuk melihat ke dalam file gemspec Anda untuk dependensi ketika Anda menjalankan
bundle install
.Selanjutnya, pastikan RSpec adalah ketergantungan pengembangan permata Anda. Edit gemspec sehingga terbaca:
Selanjutnya, buat
spec/spec_helper.rb
dan tambahkan sesuatu seperti:Dua baris pertama memberi tahu Bundler untuk memuat hanya permata di dalam gemspec Anda. Saat Anda memasang permata Anda sendiri di mesin Anda sendiri, ini akan memaksa spesifikasi Anda untuk menggunakan kode Anda saat ini, bukan versi yang telah Anda instal secara terpisah.
Buat spec, misalnya
spec/foobar_spec.rb
:Opsional: tambahkan
.rspec
file untuk opsi default dan letakkan di jalur root permata Anda:Akhirnya: jalankan spesifikasi:
sumber
rspec --init
rspec --init
tidak tersedia ketika saya menulis ini, tapi bagus!Solusi Iain di atas berfungsi dengan baik!
Jika Anda juga menginginkan Rakefile, ini yang Anda butuhkan:
Periksa RDoc untuk RakeTask untuk berbagai opsi yang secara opsional dapat Anda berikan ke definisi tugas.
sumber
Anda dapat menghasilkan permata baru Anda dengan rspec dengan menjalankan
bundler gem --test=rspec my_gem
. Tanpa Pengaturan tambahan!Saya selalu melupakan ini. Diimplementasikan di sini: https://github.com/bundler/bundler/blob/33d2f67d56fe8bf00b0189c26125d27527ef1516/lib/bundler/cli/gem.rb#L36
sumber
--test=rspec
, tetapi masih bertanya apakah saya ingin menggunakan Rspec ketika saya berlaribundler gem my_gem
.Inilah cara yang murah dan mudah (meskipun tidak disarankan secara resmi):
Buat dir di root permata Anda disebut
spec
, masukkan spesifikasi Anda di sana. Anda mungkin sudah menginstal rspec, tetapi jika tidak, lakukan sajagem install rspec
dan lupakan Gemfiles dan bundler.Selanjutnya, Anda akan membuat spec, dan Anda harus memberi tahu di mana aplikasi Anda berada, di mana file Anda berada, dan termasuk file yang ingin Anda uji (beserta semua dependensinya):
Buka Terminal dan jalankan rspec:
Jika Anda ingin beberapa
.rspec
opsi suka, buat.rspec
file dan letakkan di jalur root permata Anda. Milik saya terlihat seperti ini:Mudah, cepat, rapi!
Saya suka ini karena Anda tidak perlu menambahkan dependensi ke proyek Anda sama sekali, dan semuanya tetap sangat cepat.
bundle exec
sedikit melambat, yang harus Anda lakukan untuk memastikan Anda menggunakan versi rspec yang sama setiap saat. 0,56 detik yang diperlukan untuk menjalankan dua tes 99% diambil pada saat komputer saya memuat rspec. Menjalankan ratusan spesifikasi harus sangat cepat. Satu-satunya masalah yang Anda bisa temui yang saya tahu adalah jika Anda mengubah versi rspec dan versi baru tidak kompatibel dengan beberapa fungsi yang Anda gunakan dalam pengujian Anda, Anda mungkin harus menulis ulang beberapa tes.Ini bagus jika Anda melakukan spesifikasi satu kali atau memiliki alasan yang bagus untuk TIDAK memasukkan rspec di gemspec Anda, namun itu tidak terlalu baik untuk mengaktifkan berbagi atau menegakkan kompatibilitas.
sumber
Thing = AwesomeGem::Awesome
atau Anda dapat melakukan tes di dalam modul, sepertimodule AwesomeGem; it 'stuff' do; Awesome.new ... end; end