Langsung ke konten utama

Continues Integration Menggunakan Travis CI dan Github Part 2


Setelah sebelumnya saya telah sedikit memberi penjelasan tentang Continues Integration dan Software Development Process yang sering digunakan oleh pengembang.developer pada artikel Continues Integration Menggunakan Travis CI dan Github Part 1, maka pada postingan kali ini kita akan langsung koding.

Buat folder baru untuk menempatkan proyek Anda, pada kasus ini folder saya beri nama gcs-image-api. Setelah itu jalankan npm init melalui terminal/cmd di folder yang Anda buat untuk menginisialisasikan proyek nodejs baru.

Memperisapkan test

Jalankan perintah berikut pada terminal/cmd untuk mmenginstall mocha dan chai

npm install chai chai-http mocha --save-dev

Sekarang buat folder test di dalam folder proyek anda kemudian buat file mocha.opts, tuliskan text berikut ke dalam file mocha.opts :

test/**/*.js

File mocha.opts ini digunakan untuk memberitahu mocha konfigurasi yang digunakan dalam melakukan test termasuk file apa saja yang digunakan, timeout dan lain sebagainya.

Pada proyek ini saya hanya akan membuat 2 REST API endpoints yaitu pencarian dan pencarian terakhir, history pencarian disimpan menggunakan database mongodb, Anda dapat menginstall mongodb pada PC/Laptop Anda atau Anda dapat menggunakan layanan mlab.com. disini saya menggunakan mlab.com agar tidak direpotkan dengan proses setup mongodb.

Buat folder baru beri nama integration letakkan di dalam folder test, setelah itu buat file baru untuk menulis test yang akan dilakukan, beri nama api_test.js. di file ini Anda dapat menggunakan modul nodejs, disini kita perlu menggunakan modul chai dan chai-http.

const chai = require('chai');
const should = chai.should();
const server = require('../../app');
const chaiHttp = require('chai-http');

Sekarang kita perlu memberitahu chai bahwa kita akan menggunakan chai-http selama proses testing.

const chai = require('chai');
const should = chai.should();
const server = require('../../app');
const chaiHttp = require('chai-http');

chai.use(chaiHttp);

Pada proyek ini kita akan menggunakan Software Development Process BDD (Behavior-driven Development) agar test dapat lebih mudah dimengerti. Pertama kita akan mebuat test untuk pencarian, berikut merupakan daftar test yang akan dilakukan :

  1. kita perlu mengecek bahwa tidak ada error yang terjadi
  2. server mengembalikan respon dengan kode status 200
  3. response harus berupa JSON
  4. respon akan diberikan limit 10 dan panjang array dari respon harus 10
  5. Objek pertama pada array respon harus memiliki beberapa kunci/property antara lain adalah
    • contextLink
    • height
    • width
    • byteSize
    • thumbnailLink
    • thumbnailHeight
    • link

Sekarang mari kita mulai menulisnya, pertama kita perlu menjelaskan tentang test apa yang akan kita buat, gunakan describe untuk menjelaskan bahwa test yang kita lakukan adalah test untuk pencarian, berikan metode http dan route yang akan kita gunakan di server nantinya.

describe('GET /:query' function(){

});

Sekarang berikan limit waktu timeout atau batas waktu test hingga test dianggap gagal jika melebihi waktu yang telah ditentukan, karena nantinya server bisa jadi akan menahan respon ketika melakukan request ke Google Custom Search API. Kita akan memberikan timeout sebanyak 50000 milisecond.

describe('GET /:query' function(){
this.setTimeout(50000);
});

Sekarang buat testnya dan menjelaskan test lebih spesifik menggunakan it, paramater kedua dari fungsi it merupakan callback yang akan dipanggil ketika test dijalankan callback ini memiliki paramater done, dimana done ini akan dipanggil jika dirasa proses test sudah selesai. Karena dalam kasus ini saya hanya membuat api untuk mencari gambar, maka disini saya hanya akan mengecek bahwa response tersebut meruapakan array dari objek gambar-gambar tersebut.

describe('GET /:query' function(){
this.setTimeout(50000);
it('should return a response with a list of image', function (done) {

});
});

Sekarang kita akan melakukan request pada server menggunakan chai dengan metode GET dan memberikan parameter limit serta offset pada endpoint.

describe('GET /:query' function(){
this.setTimeout(50000);
it('should return a response with a list of image', function (done) {
chai.request(server)
.get('/nodejs?limit=10&offset')
.end(function(err, res){

});
})
});

Sekarang kita akan melakukan test sesuai dengan daftar test sebelumnya.

1. Mengecek bahwa tidak ada error yang terjadi

// there should be no errors
should.not.exist(err);

2. Server mengembalikan respon dengan kode status 200

// there should be a 200 status code
res.status.should.equal(200);

3. Respon harus berupa JSON

// the response should be JSON
res.type.should.equal('application/json');

4. Panjang array dari respon harus 10

// the Array response body should have a
// length 10
res.body.length.should.eql(10);

5.Objek pertama pada array harus memiliki kunci/property yang sesuai.

res.body[0].should.include.keys(
'contextLink', 'height', 'width', 'byteSize', 'thumbnailLink', 'thumbnailHeight', 'link'
);
done();



Selanjutnya kita akan mebuat test untuk riwayat pencarian, test yang dilakukan tidak berbeda jauh dengan test sebelumnya yang beda hanya pada kunci,property objeknya saja dimana Objek pertama pada array respon harus memiliki beberapa kunci/property antara lain adalah :
  • term
  • time

Testnya akan terlihat seperti berikut :

describe('GET /latest', function () {
this.timeout(5000);
it('should return a list of recent search history', function (done) {
chai.request(server)
.get('/latest')
.end(function (err, res) {
console.log(res.body)
// there should be no errors
should.not.exist(err);
// there should be a 200 status code
res.status.should.equal(200);
// the response should be JSON
res.type.should.equal('application/json');
// the first object in the data array should
// have the right keys
res.body[0].should.include.keys(
'term', 'time'
);
done();
});
});
});

Sekarang kita telah selesai membuat testnya, jika Anda ingin mencoba untuk menjalankan test ketikkan perintah mocha pada terminal/cmd, tapi tentu saja akan error karena kita belum membuat koding servernya :D.

Pada postingan selanjutnya kita akan mulai membuat koding untuk servernya.

Komentar

Postingan populer dari blog ini

Menampilkan Gambar Pada PictureBox Di Visual Basic .Net

Pada kesempatan kali ini saya akan menunjukkan bagaimana cara menampilkan gambar pada PictureBox di Visual Basic .NET. Terdapat beberapa cara untuk menampilkan gambar pada PictureBox dan disini saya akan memberikan beberapa cara yang saya ketahui serta kelebihan dan kekurangan dalam menggunakan cara tersebut. Pertama-tama buatlah sebuah project baru dengan memilih File > New > New Project . Kemudian Drag And Drop PictureBox dari jendela Toolbox ke form. Menampilkan Gambar Dengan Cara Standar Yang saya maksud dengan cara standar disini adalah cara yang biasa dilakukan oleh programmer atau developer dan yang dianjurkan oleh MSDN pada artikel How to: Set Pictures at Run Time dan  How to: Load a Picture Using the Designer Kelebihan Mudah diimplementasikan terutama bagi programmer/developer pemula. Kekurangan Ada kemungkinan gambar yang diload/ditampilkan ke PictureBox akan dilock/dikunci untuk digunakan oleh user yang mengakses gambar tersebut, sehingga user lain tidak dapat men...

Membuat Situs Traffic Exchange

Membuat Situs Traffic Exchange Pada saat ini situs-situs traffic exchange semakin marak di dunia internet. Karena semakin berkembangya teknologi sehingga membuat hal lain pun ikut berkembang. Situs Traffic Exchange ini misalnya, saat ini banyak situs-situs traffic exchange yang tidak hanya menyediakan layana traffic exchange namun sekarang  telah ada situs traffic exchange yang menawarkan Social Exchange seperti twitter followers, facebook like, google+ circle dan lain sebagainya. Dan bahkan ada juga situs traffic exchange yang menyediakan layanan SEO seperti Directory Submission.  Pada postingan ini saya tidak akan berbicara banyak kepada Anda, karena saya tahu saat Anda masuk ke halaman ini berarti Anda sedang mencari cara Membuat Situs Traffic Exchange. Mungkin Anda sampai ke halaman ini karna mungkin hanya sedikit blog/website lain yang membahas tentang hal ini. Dan mungkin niat Anda adalah Membuat Situs Traffic Exchange secara gratis sehingga Anda tidak perlu mengeluarkan...

Dua Startup Indonesia yang Berangkat ke Google Amerika

Dua perusahaan rintisan (startup) asal Indonesia berkesempatan diboyong ke markas Google yang bertempat di Mountain View, California, Amerika Serikat. Selain Indonesia, ada satu lagi startup dari negara lain yang dibawa untuk menghadiri konferensi tahunan Google I/O yang digelar pada 16-18 Mei 2017 mendatang. Yaitu dari Meksiko. STARTUP MENJAMUR DI INDONESIA, HANYA SEDIKIT YANG SUKSES Startup yang dimaksud adalah Pasienia (Indonesia) , Reblood (Indonesia) , dan Croquetero (Meksiko). Ketiganya yang terpilih dari 469 pelamar dari anggota Google Business Groups (GBG) dan para enterprenir independen di 26 negara. Disebutkan, pengajuan tersebut merepresentasikan ide-ide besar dari enterpreneur di seluruh dunia, termasuk di antaranya Brasil, Mesir, Maroko, Nigeria, Pakistan, Peru, hingga Uganda. "Sebagai bentuk usaha Google dalam menginspirasi para entrepreneur untuk dapat mengarahkan bisnis mereka ke ranah online, Google mengundang para anggota GBG global untuk dapat berpartisipasi dal...