Skip to main content

Command Palette

Search for a command to run...

Tips Mocking Function dengan Jest untuk Pemula

Bingung dengan mocking function di Jest? Ini contoh kodenya.

Updated
2 min read
Tips Mocking Function dengan Jest untuk Pemula
A

A software engineer, coding instructor, and creator of Mongoloquent ORM. Active in communities and contribute to open-source projects.

Tetsing adalah salah satu bagian penting dalam men-develop sebuah program, yang bertujuan untuk memastikan program yang kita develop sesuai yang kita harapkan.

Namun ketika program yang kita develop terintergarsi dengan third party services seperti social login, cek ongkir, dll, terkdangan proses testing menjadi sesuatu yang tricky.

Terkadang me-mocking sebuah function yang terintegrasi dengan third party services diperlukan didalam sebuah testing guna mempercepat proses testing itu sendiri.

Berikut adalah sample code mocking menggunakan jest yang bisa teman-teman gunakan untuk menguji/testing sebuah function yang terintegrasi dengan third party services.

Saya asumsikan teman-teman sudah familiar dengan basic testing di jest.

// User.js
const db = require("./dbconfig"); // your db config

class User {
    static create = async (payload) => {
        try {
            return await db.create(payload);
        } catch (err) {
            throw err;
        }
    };

    static findAll = async () => {
        try {
            return await db.findAll();
        } catch (err) {
            throw err;
        }
    };

    static deleteAll = async () => {
        try {
            return await db.deleteAll();
        } catch (err) {
            throw err;
        }
    };
}

modul.exports = User;
// user.test.js
const User = require("./User");
const app = require("./app");
const request = require("supertest");

describe("Testing user", () => {
    beforeAll(async () => {
        await User.create({
            username: "udin",
            email: "udin@mail.com",
        });
    });

    beforeEach(() => {
        jest.restoreAllMocks();
    });

    afterAll(async () => {
        await User.deleteAll();
    });

    it("Should be return error when hit findAll", (done) => {
    jest.spyOn(User, "findAll").mockRejectedValue("Error"); // you can pass your value as arg
        // or => User.findAll = jest.fn().mockRejectedValue('Error')
        request(app)
            .get("/users")
            .then((res) => {
        // expect your response here
                expect(res.status).toBe(500);
                expect(res.body).toBe("Error");
                done();
            })
            .catch((err) => {
                done(err);
            });
    });
});

Sumber