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.

  • 🔘 Peran kerangka kerja: Jasmine menguji apa pun JavaSkrip tanpa peramban, DOM, atau pustaka pembantu.
  • ☑️ Pengaturan lingkungan: Instal modulnya, jalankan jasmine init, lalu periksa spec/support/jasmine.json.
  • ✅ Pola spesifikasi: describe memberi nama sebuah suite, it mendefinisikan sebuah spesifikasi, expect menegaskan hasilnya.
  • 🧪 Pencocok: toBe, toEqual, toContain, toThrow, dan toHaveBeenCalled mencakup sebagian besar pernyataan.
  • ️ Pelari modern: Paket jasmine yang dipelihara menggantikan modul jasmine-node yang tidak lagi dipelihara.
  • 📊 Pilihan kerangka kerja: Jasmine mengirimkan pernyataan dan mata-mata, sementara Jest menambahkan alur paralel dan cuplikan.

Tutorial framework Jasmine untuk pengujian unit aplikasi Node.js

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.

File konfigurasi Jasmine di folder dukungan spesifikasi yang menunjukkan direktori spesifikasi dan spec_files

  1. Perhatikan bahwa direktori spesifikasi ditentukan di sini. Seperti disebutkan sebelumnya, ketika jasmine dijalankan, ia mencari semua tes di direktori ini.
  2. 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.

Modul Add.js mengekspor fungsi AddNumber yang mengembalikan jumlah dari dua parameter.

var exports=module.exports={};
exports.AddNumber=function(a,b)
{
return a+b;
};

Code Penjelasan

  1. Kata kunci “ekspor” digunakan untuk memastikan bahwa fungsi yang ditentukan dalam file ini benar-benar dapat diakses oleh file lain.
  2. 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.
  3. 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.

Tambahkan file add-spec.js dengan describe suite dan it spec yang menyatakan AddNumber mengembalikan 11.

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

  1. Pertama-tama kita perlu menyertakan file Add.js agar kita dapat menguji fungsi 'AddNumber' di file ini.
  2. 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”.
  3. Bagian selanjutnya adalah memberikan deskripsi pengujian kita menggunakan metode 'it'.
  4. 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.
  5. 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

  1. Untuk menjalankan tes, seseorang perlu menjalankan perintah melati.
  2. 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.

Output konsol dari perintah jasmine yang melaporkan pengujian add-spec yang telah dieksekusi.

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.

Pertanyaan Umum Demo Slot

Jasmine membaca spec_dir sebagai awalan, kemudian setiap glob yang tercantum dalam spec_files, sehingga hanya file yang cocok yang dijalankan. Jalur yang diawali dengan tanda seru dikecualikan, dan helper dimuat sekali sebelum spesifikasi untuk mendaftarkan pengaturan bersama.

Nyatakan spesifikasi sebagai async dan tunggu panggilan, kembalikan promise, atau terima callback done. panduan asinkron memperingatkan bahwa fungsi tersebut harus dijalankan tepat satu kali, jika tidak, kegagalan akan terjadi pada spesifikasi yang salah.

Lewatkan jalur atau pola setelah runner, misalnya npx jasmine spec/appSpec.js. Flag –filter menerima pola yang cocok dengan nama describe, yang menjaga umpan balik tetap cepat saat Anda mengerjakan satu suite.

The simpul melati Paket ini berada dalam mode pemeliharaan, masih menyertakan Jasmine 1.3, dan mencantumkan Node.js 10 dan 12 sebagai versi terbaru. Ini adalah paket jasmine resmi. tracks kerangka kerja dan rilis Node.js yang didukung sebagai gantinya.

Tambahkan awalan x pada spesifikasi, seperti xit atau xdescribe, dan Jasmine akan melaporkannya sebagai tertunda. Tambahkan awalan f, seperti fit atau fdescribe, dan hanya spesifikasi yang difokuskan yang akan dijalankan. Hapus kedua awalan tersebut sebelum melakukan commit.

Asisten AI membuat draf blok deskripsi, pencocok, dan kasus khusus dari modul yang ada dalam hitungan detik, dan mereka menandai rangkaian yang gagal secara berkala. Setiap spesifikasi yang dihasilkan masih perlu ditinjau, karena pernyataan yang yakin tentang perilaku yang salah menyembunyikan cacat tersebut.

Kopilot GitHub Fitur ini menyelesaikan spesifikasi saat Anda mengetik dan mode agennya dapat membuka permintaan pull yang memperbaiki spesifikasi yang rusak setelah refaktor. Perlakukan perbedaan tersebut sebagai proposal dan jalankan rangkaian pengujian sendiri.

Angular masih membuat kerangka spesifikasi Jasmine, dan pertractor Sebelumnya, Jasmine digunakan sebagai kerangka kerja default sebelum diarsipkan. Sekarang, tim memasangkan Jasmine dengan Karma untuk browser, atau memindahkan alur kerja browser ke Karma. Cypress dan Penulis Drama.

Ringkaslah postingan ini dengan: