Contoh Unit Testing Dengan Jest

Jest adalah Sebuah framework pengujian berdasarkan Javascripts yang berfokus pada kesederhanaan. Jest dapat menguji perangkat lunak yang dibuat menggunakan Babel, TypeScript, Node, React, Angular, Vue.

Contoh Unit Testing Dengan Jest

Apa itu Jest?
  1. Kelebihan Jest:
    • Tidak membutuhkan konfigurasi yang rumit
    • Cepat
    • Mendukung snapshot testing
  2. Fitur-fitur pada Jest:
    • Memiliki mode watch
    • Menentukan area code
    • Pesan Kesalahan yang sangat membantu.

Mengapa Jest?

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.
Contoh Unit Testing Dengan Jest
Code Coverage
Tidak perlu setup tambahan, Jest daapt mengumpulkan informasi dari cakupan kode dari seluruh proyek, termasuk file yang belum diuji.
Contoh Unit Testing Dengan JestEasy Mocking
Jest menggunakan resolver khusus untuk import dalam pengujian, membuatnya mudah untuk memalsukan (mock) object apapun diluar scope pengujian yang dilakukan.
Contoh Unit Testing Dengan JestGreat Exceptions
Jika pengujian gagal, Jest menyediakan penjelasan terkait dengan apa yang diuji.
Contoh Unit Testing Dengan JestMemulai Pengujian Dengan Jest?
  1. Install Jest menggunakan yarn = yarn add --dev jest
  2. Install Jest menggunakan npm = npm install --save-dev jest
  3. 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:
Contoh Unit Testing Dengan Jest
Setelah itu, jalankan instruksi yarn test atau npm run test pada terminal di dalam folder tersebut.

Bagaimana saya tahu apa yang akan diuji?
  1. 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?”
  2. 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:
  1. Import function yang akan di test
  2. Beri input ke dalam function tersebut
  3. Tentukan apa yang diharapkan sebagai keluaran dari function tersebut
  4. Periksa apakah function tersebut menghasilkan keluaran yang diharapkan

Instruksi-instruksi pada Jest
  • 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:Contoh Unit Testing Dengan Jest
  • Lalu buat sebuah file jest test dengan nama file arith.test.js yang berisi kode berikut:Contoh Unit Testing Dengan Jest
  • Menjalankan perintah npm test arith.test.js akan menjalankan Jest untuk satu file js. Keluarannya adalah:Contoh Unit Testing Dengan Jest
  • 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 Contoh Unit Testing Dengan Jest
  • Bila instruksi npm test arith-skip.test.js di jalankan, keluarannya adalah:Contoh Unit Testing Dengan Jest
  • 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:Contoh Unit Testing Dengan Jest
  • Keluaran dari contoh adalah:Contoh Unit Testing Dengan Jest
  • 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():
    • Buat sebuah file js dengan nama math-utils.jsContoh Unit Testing Dengan Jest
  • Contoh penggunaan fungsi beforeAll():
    • Lalu buat sebuah file math-utils.test.js dengan sintaks:Contoh Unit Testing Dengan Jest
  • 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.jsContoh Unit Testing Dengan Jest
  • Berikutnya adalah file groups.test.js yang menunjukkan penggunaan fungsi describe():Contoh Unit Testing Dengan JestContoh Unit Testing Dengan Jest
  • 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.Contoh Unit Testing Dengan Jest

Sumber Referensi : atlassian | atlassian | microsoft | guru99