Testing di Custom Script - Contoh Dasar

Di sini kita akan mencoba membuat testing sederhana pada custom script.

Untuk referensi, lihat: mocha, chai dan pactum.

Mari ikuti langkah-langkah berikut:

  1. Buat sebuah project MBaaS (JavaScript).

  2. Unduh script contoh 1 dan ekstrak ke project tersebut. Di dalam situ ada:

    • sebuah custom script: hello-you,
    • dan sebuah shared script: testing-constants.
  3. Buka file scripts/hello-you/index.js. Sejajar dengan bagian tabs, di sisi kanan ada tombol-tombol action. Klik Run Test.
    Tombol action "Run Test"
    Maka akan terbuat sebuah file dengan nama index.test.js.

  4. Di dalam file index.test.js tersebut, perhatikan ada beberapa teks mengambang di atas baris tertentu, yang disebut CodeLens.
    CodeLens di dalam file testing

  5. Jika di situ diklik Run suite, maka semua kasus uji akan dijalankan, lalu akan terjadi split editor yang menampilkan laporan pengujian (testing report).
    Dan jika diklik salah satu Run test, maka hanya satu kasus uji yang akan dijalankan, dan laporan pengujiannya pun hanya untuk kasus tersebut.
    Tentu saja di tahap ini yang dijalankan itu belum ada isinya.

  6. Sekarang ubah isi file index.test.js dengan kode berikut:

    const {
    chai: { expect },
    pactum: { spec },
    } = require("@mocobaas/server-sdk").testing;
    const { baseUrl } = require("@mocobaas/shared/testing-constants");
    const {
    trigger: { path },
    } = require("./config.json");
    const scriptUrl = baseUrl + path;
    describe("hello-you", () => {
    it("use chai", () => {
    expect(scriptUrl).to.equal("http://localhost:3000/webhook/hello-you");
    });
    it("use pactum - default hello", async () => {
    await spec()
    .post(scriptUrl)
    .withJson({})
    .expectStatus(200)
    .expectBody("Hello, my friend!");
    });
    it("use pactum - named hello", async () => {
    await spec()
    .post(scriptUrl)
    .withJson({ name: "Osman" })
    .expectStatus(200)
    .expectBody("Hello, Osman!");
    });
    it("use pactum - invalid data type", async () => {
    await spec()
    .post(scriptUrl)
    .withJson({ name: 12345 })
    .expectStatus(400)
    .expectJsonLike([
    {
    dataPath: ".name",
    params: { type: "string" },
    },
    ]);
    });
    });
  7. Klik Run suite. Tunggu proses persiapan dan pengujian dilakukan, hingga tampil laporan. Seharusnya semua kasus uji mendapat hasil "Passed" (centang hijau).

Demikian cara melakukan testing di custom script.
Berikutnya, mari kita bedah beberapa hal terkait kode pengujian di atas:

  • Ada satu kasus it("use chai"), di dalamnya dicontohkan cara penggunaan chai.expect. Kita memastikan nilai dari scriptUrl, yang mana dia digunakan pada kasus-kasus lainnya.
  • Ada beberapa kasus it("use pactum"), di dalamnya dicontohkan cara penggunaan pactum.spec, yang ketika dijalankan akan terjadi network request.
  • Pada kasus kedua dan ketiga, kita mengharapkan hasil HTTP status 200, yang mana itu adalah kode success. Biasanya ini disebut Positive Case.
  • Pada kasus terakhir, kita mengharapkan hasil HTTP status 400, yang mana itu adalah kode error. Biasanya ini disebut Negative Case.