Setup Express, Typescript, dan Jest

I am a Junior Fullstack Developer who currently study at University of Merdeka Malang majoring in Management Information Systems. Interested in Devops, Cloud Computing and Microservice.
Halo semuanya, ini adalah artikel kedua saya dan disini mungkin saya akan membahas atau memberikan tutorial tentang cara setup aplikasi Express dengan Typescript dan Jest. Nah alasan saya bikin artikel ini sebenarnya karena saya sendiri itu kadang pelupa, saya sering gonta-ganti framework dalam ngerjain suatu project, misal projek pertama saya pakai Express, projek kedua pakai Laravel, projek ketiga pindah lagi ke Flutter, nah ini yang bikin saya sering lupa. Akhirnya saya buat artikel ini biar gampang ngingatnya sekalian share juga ke kalian tentang cara setupnya. Kalau begitu tanpa basa basi lagi kita mulai pembahasannya..
Langkah Setup
Langkah pertama yang harus dilakukan adalah kita buat projectnya terlebih dahulu, yaitu kita pakai..
npm init -yKemudian kita perlu setup tsconfig nya.
tsc --initSelanjutnya kita install terlebih dahulu dependecy-dependency nya.
yarn add express yarn add -D typescript @types/express @types/node jest @types/jest ts-jest supertest @types/supertest ts-node-devNote: Jadi disini kita perlu install typescript, express, jest, ts-jest, supertest dan ts-node-dev.
ts-jestdisini dipakai supaya kita bisa menggunakanimportdi file test kita.Kita buat file
jest.config.jsondan kita ketik.module.exports = { "testPathIgnorePatterns": [ "./build", "./node_modules" ], "transform": { "^.+\\.ts?$": "ts-jest" } }Kita ubah sedikit konfigurasi di
tsconfig.jsonseperti ini."outDir": "./build", "rootDir": "./src",Kita coba bikin file entrypoint nya di
src/index.tsseperti ini.import express from "express" const app = express() const port = process.env.PORT || 3000 export default appKemudian kita bikin file unit testnya di
src/index.unit.test.ts.import app from './index' import request from 'supertest' describe('Test App', () => { it('should run without problem', () => { expect(true).toBe(true); }) })Langkah terakhir yaitu kita setting di
package.json."scripts": { "dev": "tsnd --respawn src/index", "build": "tsc", "test": "jest", "test:watch": "jest --watchAll", "test:unit": "jest unit", "test:int": "jest int", "start": "node build/index" },Selesai! Tinggal kita run aja sesuai scriptnya.
Oke setupnya semua udah selesai, disini aku mau jelasin sedikit lagi karena mungkin temen-temen disini ada yang sedikit belum paham. Di langkah ke 3 itu ada beberapa dependency seperti ts-jest, supertest dan ts-node-dev.
ts-jestini disini dibutuhin banget biar kita bisa pakaiimportstatement di file test kita. Kalo kita nggak pakai ini maka setiap kali kita mau pakai module kita perlu pakairequire. Saya sendiri lebih suka pakaiimportketimbang pakairequire.supertestini diperlukan supaya kita bisa ngetes api (http) kita. Misal kita mau ngetestGET /api/hellomaka kita pakai dependencysupertestini.ts-node-devini digunakan untuk debug/run file typescript kita secara watch. Maksud watch disini yaitu ketika kita ubah code kita maka secara otomatis server kita akan restart sendiri tanpa perlu kita stop-run manual.
Kemudian di langkah ke 4 itu ada code testPathIgnorePatterns, ini digunakan supaya ketika kita jalankan test, directory build dan node_modules akan diabaikan. Jika tidak maka script test akan menjalankan test yang ada di directory manapun dan kita nggak mau karena kita cuma pingin jalanin test yang ada di folder src dan folder tests.
Jadi itu dia cara setup dan juga sedikit penjelasannya, semoga bermanfaat. Jika dirasa artikel ini bermanfaat jangan lupa di like dan share ya, terimakasih.

