Catatan Jimboy

Konfigurasi Unit Testing di NodeJS dengan Jest

December 27, 2017

Konfigurasi Unit Testing di NodeJS dengan Jest

Unit testing adalah sebuah teknik pengembangan perangkat lunak yang memungkinkan kita untuk menulis test ter-otomatisasi di masing-masing unit untuk memastikan setiap unit bekerja sesuai harapan.

Sedangkan motivasi saya untuk menulis test adalah untuk mendapatkan badge ijo ijo ini di repo saya 😁

Badge ijo-ijo dari travis CI yang menandakan unit test di repo ini sukses

Belakangan ini saya sedang belajar lagi algoritma dan dasar ilmu komputer, sambil menyelam minum air, jadi sekalian saja saya belajar unit test di NodeJS

Untuk meng-eksekusi script test yang telah dibuat kita memerlukan test runner, yang akan saya pakai adalah Jest

Memulai koding

Pertama kita akan membuat kode/unit yang akan ditest, saya telah menulis sebuah fungsi bernama fizzbuzz.

Algoritmanya sederhana saya akan gambarkan dengan pseudocode ini.

Fungsi fizzbuzz menerima 1 parameter angka, yang selanjutnya akan saya sebut input

  1. Jika input habis dibagi 3 dan juga habis di bagi 5 maka hasilnya FizzBuzz
  2. Jika input hanya habis dibagi 3, hasilnya Fizz
  3. Jika input hanya habis dibagi 5, hasilnya Buzz

Berikut implementasinya dalam Javascript.

// fizzbuzz.js
function fizzbuzz(value) {
  if (value % 3 === 0 && value % 5 === 0) {
    return 'FizzBuzz';
  }

  if (value % 3 === 0) {
    return 'Fizz';
  }

  if (value % 5 === 0) {
    return 'Buzz';
  }

  return value;
}

module.exports = fizzbuzz;
// export fungsi ini agar bisa dipanggil di file lain

Untuk script test-nya kita cukup membuat file baru dan tulis seperti ini. Menurut saya API jest sudah sangat manuasiawi dan sehingga mudah dimengerti.

Fungsi expect akan membandingkan value yang di kembalikan oleh fungsi yang kita panggil dengan nilai yang diharapkan (parameter pertama di fungsi toBe)

// fizzbuzz.test.js
const fizzbuzz = require('./fizzbuzz');

it('3 should return Fizz', () => {
  expect(fizzbuzz(3)).toBe('Fizz');
});

it('5 should return Buzz', () => {
  expect(fizzbuzz(5)).toBe('Buzz');
});

it('15 should return Fizz', () => {
  expect(fizzbuzz(15)).toBe('FizzBuzz');
});

Nah untuk menjalankan script test kita perlu melakukan beberapa konfigurasi terlebih dulu.

Edit package.jsondan edit bagian scripts menjadi seperti dibawah

{
    "name": "js-algorithms",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
    "test": "jest"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "devDependencies": {
    "jest": "^22.0.4"
    }
}

Jika file package.json belum ada, kamu bisa generate dengan perintah npm init -y

Nah sekarang jika ingin running test-nya, tinggal eksekusi perintah ini di command line

npm test

Berikut hasil running-nya di mesin saya.

Hasil test

Wow hebat, semua test-nya lolos, selamat anda adalah programmer terbaik di negeri ini!

Mendapatkan Badge Ijo ijo

Nah, ini bagian yang menarik. Saya menggunakan Travis CI, ini adalah test runner yang berjalan di cloud dan dapat di integrasikan dengan Github.

Jadi begitu ada perubahan code di github Travis CI akan running script test sesuai dengan konfigurasi yang kita buat.

Buatlah file dengan nama .travis.yml dan tuliskan konfigurasi ini

language: node_js
node_js:
    - "8"

Sekarang login /signup di web Travis CI, di dashboardnya akan ada list repo kita yang bisa dipasangkan test

Dashboard Travis CI

Kalau repo kamu belum muncul di dashboard cobalah klik tombol *Sync Account. *Tada! repo kamu akan muncul disana, jika sudah muncul klik toggle check agar berwarna biru menandakan Travis CI selalu mengawasi repo tersebut dan akan eksekusi test setiap terjadi perubahan kode.

Jika test anda sukses maka akan muncul badge ijo ijo di halaman detail repomu.

Halaman detail repo di Travis CI

Nah kalau kita ingin share badge tersebut atau embed di halaman lain, tinggal klik badge itu dan muncul halaman seperti dibawah.

Klik badge maka akan muncul halaman untuk mendapatkan URL ke gambar badge

Kalau ingin menambahkan badge di README repo github, tinggal copy as Markdown dan paste di file READMEnya.

Tautan terkait

https://github.com/wayanjimmy/js-algorithms


Kyle Mathews

Ditulis oleh Wayan Jimmy tinggal di Bali, Pemrogram web, Penggemar pempek Palembang. Sekarang lagi apa ?