Apa itu Jest?
Mengapa Jest?
- Kelebihan Jest:
- Tidak membutuhkan konfigurasi yang rumit
- Cepat
- Mendukung snapshot testing
- Fitur-fitur pada Jest:
- Memiliki mode watch
- Menentukan area code
- Pesan Kesalahan yang sangat membantu.
Cepat dan Aman
Dengan memastikan pengujian yang dilakukan memiliki global state yang unik, Jest dapat menjalankan pengujian secara parallel. Untuk mempercepat, Jest menjalankan pengujian yang sebelumnya gagal terlebih dahulu dan mengatur ulang proses berdasarkan lama waktu yang dibutuhkan file pengujian.
Code Coverage
Tidak perlu setup tambahan, Jest daapt mengumpulkan informasi dari cakupan kode dari seluruh proyek, termasuk file yang belum diuji.
Tidak perlu setup tambahan, Jest daapt mengumpulkan informasi dari cakupan kode dari seluruh proyek, termasuk file yang belum diuji.
Jest menggunakan resolver khusus untuk import dalam pengujian, membuatnya mudah untuk memalsukan (mock) object apapun diluar scope pengujian yang dilakukan.
Jika pengujian gagal, Jest menyediakan penjelasan terkait dengan apa yang diuji.
- Install Jest menggunakan yarn = yarn add --dev jest
- Install Jest menggunakan npm = npm install --save-dev jest
- Untuk menjalankan Jest langsung dari CLI (dan terpasang secara global) dapat dilakukan dengan instruksi yarn global add jest atau npm install jest --global
Memulai Pengujian Dengan Jest?
Berikutnya buat sebuah file package.json yang akan berisi konfigurasi untuk menjalankan test menggunakan Jest seperti pada gambar berikut:

Setelah itu, jalankan instruksi yarn test atau npm run test pada terminal di dalam folder tersebut.
Bagaimana saya tahu apa yang akan diuji?
Berikut adalah aliran pengujian yang dapat dilakukan:
Instruksi-instruksi pada Jest
Sumber Referensi : atlassian | atlassian | microsoft | guru99
- Ketika sampai tahap pengujian, bahkan blok kode program sederhana pun dapat membuat programmer bertanya-tanya. Pertanyaan yang paling umum adalah ”Bagaimana saya tahu apa yang harus diuji?”
- Jika kita menulis aplikasi web, titik awal yang baik adalah menguji setiap halaman aplikasi dan setiap interaksi dari pengguna. Akan tetapi aplikasi web juga terbuat dari unit kode program seperti fungsi (function) dan modul (module) yang perlu diuji juga.
Berikut adalah aliran pengujian yang dapat dilakukan:
- Import function yang akan di test
- Beri input ke dalam function tersebut
- Tentukan apa yang diharapkan sebagai keluaran dari function tersebut
- Periksa apakah function tersebut menghasilkan keluaran yang diharapkan
- Jest memiliki koleksi instruksi yang dapat digunakan untuk berbagai scenario testing.
- Sebagai contoh, buatlah sebuah file js dengan nama arith.js yang berisi kode sebagai berikut:
- Lalu buat sebuah file jest test dengan nama file arith.test.js yang berisi kode berikut:
- Menjalankan perintah npm test arith.test.js akan menjalankan Jest untuk satu file js. Keluarannya adalah:
- Secara default, instruksi npm test akan mengeksekusi semua scenario test yang ada di dalam file arith.test.js.
- Bila ada test yang ingin di lewati atau hanya ingin focus ke salah satu fungsi dari semua fungsi yang ada, Jest menyediakan fungsi skip.
- Melewati fungsi yang tidak ingin ditest dilakukan dengan modifikasi kode test pada arith.test.js dan disimpan pada file baru yaitu arith-skip.test.js
- Bila instruksi npm test arith-skip.test.js di jalankan, keluarannya adalah:
- Dari contoh ini, terlihat bahwa untuk scenario melewati beberapa fungsi, dapat dilakukan dengan menggunkan keyword xtest atau fungsi test.skip.
- Jest juga memungkinkan scenario test dengan beragam nilai.
- Fitur ini disebut Jest parameterized test.
- Untuk menggunakan paramtereized test, sintaks Jest menggunakan fungsi global each().
- Contoh paramtereized test:
- Keluaran dari contoh adalah:
- Skenario berikutnya adalah menjalankan test setelah sebuah fungsi atau variable di inisiasi.
- Untuk mendukung scenario ini, Jest menyediakan fungsi beforeAll().
- Fungsi ini, akan menjalankan kode di dalamnya sebelum menjalankan fungsi yang akan di test.
- Jika fungsi beforeAll() mengembalikan sebuah nilai promise atau fungsi tersebut adalah sebuah generator, Jest akan menunggu hingga fungsi tersebut selesai dijalankan.
- Contoh penggunaan fungsi beforeAll():
- Contoh penggunaan fungsi beforeAll():
- Jest memungkinkan pembuatan block yang menjalankan test dari fungsi yang berbeda tapi saling terkait satu sama lain.
- Fungsi yang digunakan adalah describe().
- Dengan fungsi describe(), Jest dapat menjalankan test dari dua file js yang berbeda sekaligus.
- Sebagai contoh, buat sebuah file baru dengan nama string-utils.js
- Berikutnya adalah file groups.test.js yang menunjukkan penggunaan fungsi describe():
- Jest juga bisa digunakan untuk melakukan test pada JavaScript yang menggunakan library.
- Pada contoh berikut, Jest digunakan untuk melakukan test pada JavaScript yang menggunakan library Axios dan json-server.
- Sebelum menggunakan test, lakukan instalasi library axios dan json-server dengan instruksi:
- npm i –g jsonserver
- npm i axios
- Untuk mengawali test pada JS yang menggunakan library axios dan jsonserver, buat sebuah file json dengan nama users.json dengan isi seperti pada gambar.
- Ini adalah simulasi file json yang akan digunakan oleh library json-server.