Tutorial Jasmine Framework: Pengujian Unit dengan Contoh
⚡ Ringkasan Cerdas
Jasmine adalah sosok yang berorientasi pada perilaku. JavaKerangka kerja pengujian skrip yang menjalankan pengujian unit Node.js tanpa peramban atau DOM, menggunakan blok `describe`, ia menentukan dan mencocokkan `expect` untuk memverifikasi bahwa setiap fungsi yang diekspor berperilaku sesuai dengan yang didokumentasikan.
Apa itu JasmineJS?
Jasmine adalah sumber terbuka dan paling populer JavaKerangka pengujian pustaka skrip untuk menguji segala jenis JavaAplikasi skrip. Jasmine mengikuti prosedur Behavior Driven Development (BDD) untuk memastikan bahwa setiap baris JavaPernyataan skrip diuji unitnya dengan benar.
Untuk Apa Kerangka Melati Digunakan?
Pengujian adalah elemen kunci untuk setiap aplikasi. Untuk pengujian unit Node.js, kerangka kerja yang tersedia untuk pengujian disebut Jasmine. Pada awal tahun 2000-an, terdapat kerangka kerja untuk pengujian. JavaNaskah aplikasi bernama JsUnit. Later Kerangka kerja ini telah ditingkatkan dan sekarang dikenal sebagai Jasmine.
Jasmine membantu secara otomatis Pengujian Unit, sesuatu yang telah menjadi praktik kunci dalam pengembanganping dan menerapkan aplikasi web modern.
Dalam tutorial Jasmine ini, Anda akan mempelajari cara menyiapkan lingkungan dengan Jasmine dan cara menjalankan pengujian Jasmine untuk aplikasi Node.js pertama Anda.
Jasmine untuk menguji aplikasi Node.js
Jasmine adalah a Pengembangan Berbasis Perilaku (BDD) kerangka pengujian untuk JavaNaskah. Itu benar tidak mengandalkan browser, DOM, atau apa pun JavaKerangka kerja skrip. Dengan demikian, cocok untuk situs web, Node.js proyek, atau di mana pun yang JavaSkrip dapat dijalankan. Untuk mulai menggunakan Jasmine, Anda perlu mengunduh dan menginstal modul Jasmine yang diperlukan terlebih dahulu.
Cara Mengatur Lingkungan Pengujian Melati
Selanjutnya dalam tutorial Jasmine Node.js ini, Anda perlu menginisialisasi lingkungan Anda dan memeriksa file konfigurasi Jasmine. Langkah-langkah di bawah ini menunjukkan cara menyiapkan Jasmine di lingkungan Anda.
Langkah 1) Instal Modul NPM
Anda perlu Instal NPM Modul jasmine digunakan untuk menjalankan framework Jasmine dari dalam aplikasi Node. Untuk menginstal modul jasmine-node, jalankan perintah di bawah ini.
npm install jasmine-node
Catatan versi (2026): Perintah historis di atas masih berfungsi, tetapi simpul melati Modul ini sedang dalam mode pemeliharaan dan menyertakan Jasmine 1.3, jadi simpan hanya untuk proyek lama. Pekerjaan Node.js yang baru akan menginstal versi yang sudah dipelihara. Jasmine CLI sebagai dependensi pengembangan dan memanggilnya melalui npx:
npm install --save-dev jasmine npx jasmine init
Melati 6.x adalah lini utama saat ini dan mendukung Node.js 20, 22, dan 24, dan Node.js 24 adalah rilis LTS aktif pada tahun 2026.
Langkah 2) Inisialisasi Lingkungan Melati
Menginisialisasi proyek – Dengan melakukan ini, Jasmine membuat direktori spec dan file konfigurasi json untuk Anda. Direktori spec digunakan untuk menyimpan semua file pengujian Anda. Dengan melakukan ini, Jasmine akan mengetahui di mana semua pengujian Anda berada, dan kemudian dapat menjalankannya sesuai kebutuhan. JSON File ini digunakan untuk menyimpan informasi konfigurasi spesifik tentang Jasmine.
Untuk menginisialisasi lingkungan Jasmine, jalankan perintah di bawah ini.
jasmine init
Langkah 3) Periksa file konfigurasi Anda.
File konfigurasi akan disimpan di folder spec/support sebagai jasmine.json. File ini menyebutkan file sumber dan file spesifikasi yang Anda ingin agar disertakan oleh pelari Jasmine.
Screenshot di bawah ini menunjukkan contoh tipikal file jasmine.json untuk Jasmine.
- Perhatikan bahwa direktori spesifikasi ditentukan di sini. Seperti disebutkan sebelumnya, ketika jasmine dijalankan, ia mencari semua tes di direktori ini.
- Hal berikutnya yang perlu diperhatikan adalah parameter spec_files – Ini menunjukkan bahwa file pengujian apa pun yang dibuat harus ditambahkan dengan kata kunci 'spec'.
Catatan konfigurasi: di Jasmine 6.x, file yang sama juga menerima pembantu, yang dimuat sekali sebelum setiap spesifikasi, dan sebuah env Opsi penahan blok seperti random dan stopSpecOnExpectationFailure. Glob spec_files default adalah **/*[sS]pec.?(m)js, dan file yang berbeda dapat dilewatkan dengan –konfigurasi atau itu JALUR_KONFIGURASI_JASMINE variabel.
Selanjutnya dalam tutorial framework Jasmine ini, kita akan mempelajari cara menggunakan Jasmine untuk menguji aplikasi Node.js.
Cara menggunakan Jasmine untuk menguji aplikasi Node.js
Untuk menggunakan pengujian unit Jasmine untuk aplikasi Node.js, serangkaian langkah perlu diikuti.
Pada contoh di bawah ini, kita akan mendefinisikan sebuah modul yang menambahkan 2 angka yang perlu diuji. Kemudian kita akan mendefinisikan file kode terpisah dengan kode pengujian dan selanjutnya menggunakan Jasmine untuk menguji fungsi Add tersebut.
Langkah 1) Tentukan kode yang perlu diuji. Kita akan mendefinisikan fungsi yang akan menambahkan 2 angka dan mengembalikan hasilnya. Kode ini akan ditulis dalam file bernama “Add.js.”
Tangkapan layar di bawah ini menunjukkan modul Add.js yang sudah jadi, dan kode yang sama diulang sebagai teks di bawahnya.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Penjelasan
- Kata kunci “ekspor” digunakan untuk memastikan bahwa fungsi yang ditentukan dalam file ini benar-benar dapat diakses oleh file lain.
- Kami kemudian mendefinisikan fungsi yang disebut 'AddNumber.' Fungsi ini didefinisikan untuk mengambil 2 parameter, a dan b. Fungsi tersebut ditambahkan ke modul “ekspor” untuk menjadikan fungsi tersebut sebagai fungsi publik yang dapat diakses oleh modul aplikasi lain.
- Kami akhirnya membuat fungsi kami mengembalikan nilai tambah parameter.
Langkah 2) Selanjutnya, kita perlu mendefinisikan kode pengujian Jasmine kita, yang akan digunakan untuk menguji fungsi “Add” di file Add.js. Kode di bawah ini perlu ditempatkan dalam file bernama tambahkan-spec.js.
NoteKata 'spec' perlu ditambahkan ke file pengujian agar dapat terdeteksi oleh Jasmine.
Tangkapan layar di bawah ini menunjukkan file spesifikasi yang sama yang dibuka di editor.
var app=require("../Add.js"); describe("Addition",function(){ it("The function should add 2 numbers",function() { var value=app.AddNumber(5,6); expect(value).toBe(11); }); });
Code Penjelasan
- Pertama-tama kita perlu menyertakan file Add.js agar kita dapat menguji fungsi 'AddNumber' di file ini.
- Kami sekarang membuat modul pengujian kami. Bagian pertama dari modul pengujian adalah menjelaskan metode yang pada dasarnya memberi nama untuk pengujian kita. Dalam hal ini, nama pengujian kami adalah “Penambahan”.
- Bagian selanjutnya adalah memberikan deskripsi pengujian kita menggunakan metode 'it'.
- Sekarang kita memanggil metode AddNumber dan mengirimkan 2 parameter, yaitu 5 dan 6. Parameter ini akan diteruskan ke metode AddNumber di file Add.js. Nilai kembaliannya kemudian disimpan dalam variabel bernama value.
- Langkah terakhir adalah melakukan perbandingan atau pengujian sebenarnya. Karena kita mengharapkan nilai yang dikembalikan oleh fungsi AddNumber adalah 11, kita mendefinisikannya menggunakan metode expect(value).toBe(nilai yang diharapkan).
Keluaran
- Untuk menjalankan tes, seseorang perlu menjalankan perintah melati.
- Screenshot di bawah menunjukkan bahwa setelah perintah jasmine dijalankan, ia akan mendeteksi adanya tes bernama add-spec.js dan mengeksekusi tes tersebut. Jika ada kesalahan dalam tes, kesalahan tersebut akan ditampilkan.
Contoh Add menggunakan satu matcher saja, namun Jasmine menyediakan serangkaian matcher lengkap. Tabel di bawah ini mencantumkan matcher yang mencakup hampir semua pernyataan yang akan Anda tulis.
Jasmine Matchers yang Paling Sering Anda Gunakan
Matcher adalah perbandingan yang mengikuti expect(). Rantai .not sebelum matcher apa pun untuk membalikkannya, seperti pada expect(value).not.toBe(11).
| Pencocokan | Apa yang diperiksa | Penggunaan khas |
| menjadi | Identitas ketat, perbandingan yang sama dengan === | mengharapkan(nilai).menjadi(11) |
| untuk Setara | Kesamaan mendalam antara objek dan array | expect(user).toEqual({id: 1}) |
| untuk Mengandung | Keanggotaan di dalam sebuah array atau string | expect(files).toContain('add-spec.js') |
| Akan Didefinisikan | Nilainya bukan tidak terdefinisi | expect(app.AddNumber).toBeDefined() |
| untuk Melempar | Fungsi yang dibungkus menimbulkan kesalahan. | expect(callAdd).toThrow() |
| telah Dipanggil | Seorang mata-mata setidaknya pernah disebut-sebut. | expect(logger.write).toHaveBeenCalled() |
Dua kebiasaan berikut membuat kesalahan tetap mudah dibaca. Gunakan `toBe` hanya untuk tipe data primitif dan referensi yang identik, karena dua objek dengan isi yang sama tidak pernah sama persis (===). Gunakan `toEqual` untuk struktur, dan tambahkan `toHaveBeenCalledWith` ketika argumen sama pentingnya dengan panggilan itu sendiri.
Persiapan, Pembongkaran, dan Mata-mata di Jasmine
Suite yang sebenarnya membutuhkan ruang kerja bersama dan ruang ganda untuk kolaborator yang bekerja lambat. Jasmine menyediakan keduanya tanpa paket tambahan apa pun.
- sebelum dan sesudah masing-masing jalankan sebelum dan sesudah setiap spesifikasi di dalam blok deskripsi, yang merupakan tempat alami untuk membangun kembali perlengkapan.
- sebelum semuanya dan setelah semuanya Jalankan sekali untuk seluruh blok, jadi simpanlah untuk pekerjaan mahal seperti membuka sambungan.
- spyOn(objek, 'metode') menggantikan metode nyata dengan tracking double; tambahkan .and.returnValue() untuk mengontrol apa yang dijawabnya.
- melati.buatMata-mata('nama') Membangun duplikat mandiri untuk fungsi callback yang tidak memiliki objek untuk dilampirkan.
- Spesifikasi asinkron dapat dideklarasikan sebagai async dan ditunggu, dapat mengembalikan promise, atau dapat menerima callback done yang harus dipanggil tepat satu kali.
Spy akan direset di antara spesifikasi, sehingga sebuah suite tidak pernah membocorkan metode yang telah diubah ke dalam pengujian berikutnya. Isolasi inilah yang membuat spesifikasi yang gagal menunjuk pada satu cacat, bukan serangkaian cacat, yang merupakan disiplin yang sama seperti yang dijelaskan dalam pengujian unit dasar.
Jasmine vs Mocha vs Jest
Jasmine adalah salah satu dari tiga kerangka kerja yang mendominasi. JavaPengujian skrip, dan pilihan biasanya bergantung pada seberapa banyak kabel yang ingin Anda miliki.
| Aspek | Melati | Moka | ada |
| Pernyataan | Dibangun di | Ditambahkan, biasanya Chai | Dibangun di |
| Mata-mata dan ejekan | Dibangun di | Ditambahkan, biasanya Sinon | Dibangun di |
| Execution | Serial | Serial | Paralel di seluruh proses |
| Snapshots | Tidak | Tidak | Ya |
| Rumah bersama | Angular, Node.js biasa | Tumpukan Node.js yang fleksibel | React dan bundler modern |
Pick Moka ketika Anda ingin menyusun tumpukan pernyataan dan mocking Anda sendiri, dan ada Saat menjalankan pengujian secara paralel, cakupan pengujian dan snapshot lebih penting daripada kontrol konfigurasi. Jasmine tetap menjadi pilihan paling ringan yang masih lengkap, itulah sebabnya ia tetap umum digunakan. pengujian otomasi suite.




