describe
, context
, feature
, scenario
: Apa perbedaan (s) antara empat dan kapan saya menggunakan masing-masing?
sumber
describe
, context
, feature
, scenario
: Apa perbedaan (s) antara empat dan kapan saya menggunakan masing-masing?
Itu context
adalah alias untuk describe
, jadi secara fungsional setara. Anda dapat menggunakannya secara bergantian, satu-satunya perbedaan adalah cara membaca file spesifikasi Anda. Misalnya, tidak ada perbedaan dalam hasil pengujian. Buku RSpec mengatakan:
"Kami cenderung menggunakan
describe()
untuk hal-hal dancontext()
untuk konteks".
Secara pribadi saya suka menggunakan describe
, tetapi saya bisa melihat mengapa orang lebih suka context
.
feature
dan scenario
merupakan bagian dari Kapibara, dan bukan RSpec, dan dimaksudkan untuk digunakan dalam tes penerimaan. feature
setara dengan describe
/ context
, dan scenario
setara dengan it
/ example
.
Jika Anda menulis tes penerimaan dengan Capybara, gunakan feature
/ scenario
sintaks, jika tidak gunakan describe
/ it
sintaks.
Pagi ini, saat menulis beberapa spesifikasi, saya mengalami pertanyaan yang sama. Biasanya, saya terutama menggunakan
describe
dan tidak terlalu memikirkan hal ini, tetapi pagi ini saya berurusan dengan banyak kasus dan spesifikasi berbeda untuk satu modul, jadi itu harus mudah dipahami oleh pengembang berikutnya yang akan membaca spesifikasi tersebut. Jadi saya bertanya kepada Google tentang ini, dan saya menemukan ini: deskripsikan vs. konteks dalam rspec , yang jawabannya menurut saya cukup menarik:Jadi, dengan mengandalkan prinsip ini, Anda akan menulis spesifikasi seperti ini:
Tidak yakin apakah ini adalah aturan yang diterima secara umum tetapi saya menemukan pendekatan ini jelas dan cukup mudah dipahami.
sumber
Memperluas jawaban bagus Pierre , menurut dokumen :
Jadi bagi mereka yang akrab dengan istilah Mocha menggambarkan dan itu (yang lebih cocok untuk menggambarkan perilaku pengujian dari perspektif pengguna, maka Mocha terutama berfungsi sebagai kerangka pengujian front end), Anda dapat:
describe
danit
atau penyandingan lainnyait
di dalamcontext
blok yang membutuhkan beberapa pernyataan / pengujian untuk dibuat dalam status aplikasi tertentuDengan opsi kedua, Anda masih dapat mengikuti maksud "... membungkus [ping] serangkaian pengujian terhadap satu fungsionalitas dalam status yang sama".
Jadi pengujian Anda mungkin terlihat seperti ini:
Dengan cara ini Anda melewatkan
feature
kata kunci sepenuhnya, yang mungkin ingin Anda gunakan untuk fitur front end tertentu atau jika Anda melakukan FDD (pengembangan yang didorong fitur), yang mungkin terasa tidak nyaman bagi sebagian orang. Mintalah masukan dari tim pengembang Anda di sini.Peringatan: jangan selalu mengikuti standar industri, bayangkan jika kita mencontoh semua pengujian kita dengan filosofi Volkswagen?
sumber