API Testing dengan Mocha + Chai

Albert Waruwu
Amartha Engineering
4 min readMay 18, 2018
Not this Mocha on Unsplash

“No amount of testing can prove a software right, a single test can prove a software wrong.” — Amir Ghahrai

Sedikit Deskripsi

API Testing adalah salah satu tipe pengujian dalam software testing yang dimana kita menguji suatu API secara langsung dan sebagai bagian dari integration testing untuk memastikan apakah yang kita uji tadi sudah sesuai dengan ekspektasi kita atau tidak.

Sekarang ini sudah banyak tools yang mendukung dalam API Testing, sebut saja Postman, soapUI, Rest-Assured, MochaJS, dsb. Nah kali ini saya akan mencoba melakukan API Testing dengan salah satu tools yaitu Mocha + Chai.

MochaJS adalah salah satu Javascript test framework yang berjalan di NodeJs dan bersifat asynchronous. Kebanyakan orang menggunakan MochaJS karena tiap test berjalan secara pararel dan mudah untuk diimplementasikan. Chai sendiri adalah library yang digunakan untuk memudahkan Mocha dalam melakukan assertion pada setiap API yang dipanggil. Mocha dapat digunakan dalam 2 styles, BDD dan TDD, tergantung selera.

Siapkan Bahan

Disini kita akan menggunakan sample API yang telah saya buat sebelumnya. Sebelum cloning, pastikan direktori yang sekarang adalah direktori buat kita bekerja (workspace). Kita bisa men-clone repo-nya dengan cara :

Setelah selesai, kita harus men-download packages yang diperlukan oleh aplikasi. Caranya :

Kemudian jika semua packages telah selesai di-download, kita dapat menjalankan aplikasi dengan cara :

Untuk memastikan aplikasi kita sudah berjalan dengan baik, kita akan mencoba memanggil salah satu endpoint-nya. Harusnya jika aplikasi berjalan dengan baik, hasilnya akan seperti ini :

Nah jika sudah seperti gambar di atas, maka kita bisa lanjut untuk melakukan API Testing menggunakan Mocha + Chai.

Mulai Memasak

Sekarang kita akan membuat satu folder yang bernama test di dalam foldernode-data-murid. Folder tersebut akan menampung file-file test case yang akan kita buat nantinya. Jadi struktur direktorinya akan seperti ini :

Di dalam folder test, kita buat satu file dengan judul “sample_test.js”. Di dalam file tersebut kita akan menuliskan script untuk melakukan API Testing pada endpoint yang kita uji.

Hal pertama yang perlu dilakukan adalah meng-import module-module yang diperlukan.

let chai = require('chai');let expect = require('chai').expect;let chaiHttp = require('chai-http');

Seperti yang telah disebutkan, Chai adalah assertion library dan disini kita akan menggunakan style expect dalam melakukan assertion pada setiap respon API. Sedangkan chai-http adalah salah satu plugin pada Chai yang digunakan dalam melakukan HTTP response assertion. Untuk selengkapnya bisa dibaca di sini.

Hal kedua adalah secara umum penggunaan MochaJS hanya terdiri dari describe() dan it(). Dengan kedua method tersebut kita sudah dapat melakukan API testing.

describe() untuk mendeklarasikan secara umum setiap butir test case yang ada. Kita juga bisa menggunakan describe() di dalam describe() atau sering disebut nested describe. it() adalah butir test case. Contohnya seperti di bawah ini.

Untuk menjalankan API testing-nya, kita perlu membuka satu terminal lagi pada directory tersebut dan mulai mengetik :

enter dan voalá!

MochaJS akan memberikan report pada setiap butir test case yang kita buat.
Centang hijau berarti test case yang kita buat telah passed. Sedangkan jika test case tidak passed maka akan judul test case akan berwarna merah dan akan terdapat error log kenapa test case gak bisa passed.

Penutup

Kita bisa membuat banyak test case sebanyak yang kita perlukan, baik yang bersifat positif atau negatif, dan itu tanpa batasan. Melakukan API Testing memang terkadang membosankan namun ini mempunyai dampak pada kualitas sistem yang kita bangun.

Untuk penjelasan lebih lanjut tentang MochaJS bisa dirujuk ke situsnya langsung.

Thank you for spend your time read my articles, any feedback please put on Response.

We’re always looking for awesome people to join our incredible journey! Click here to learn more!

--

--