Rumah > hujung hadapan web > tutorial js > Cara Menggunakan Node.js Test Runner: Panduan Terperinci

Cara Menggunakan Node.js Test Runner: Panduan Terperinci

Patricia Arquette
Lepaskan: 2025-01-17 18:31:11
asal
594 orang telah melayarinya

Lari ujian JavaScript atau pelari ujian Node.js membantu mengautomasikan proses ujian untuk tapak web dan aplikasi web dengan mendayakan pelbagai teknik ujian, termasuk ujian unit, penyepaduan dan hujung ke hujung.

Pelari ujian Node.js mengautomasikan menjalankan ujian dan menawarkan maklum balas tentang keputusan untuk membantu mengenal pasti dan menyelesaikan pepijat semasa peringkat pembangunan perisian dengan berkesan.

Dalam blog ini, kami melihat cara memanfaatkan pelari ujian Node.js untuk ujian automatik sambil meneroka kaedah seperti mengejek dan ujian selari bersama cangkuk ujian.

Apakah itu Node.js Test Runner?

Bahasa pengaturcaraan seperti Python, Ruby dan Go mempunyai pelari ujian terbina dalam, tetapi JavaScript tidak mempunyainya. Semua pelari ujian dalam ekosistem JavaScript, seperti Mocha, Jest dan Jasmine, telah dibina sebagai pakej pihak ketiga.

Semua ini berubah apabila Node.js mengeluarkan pelari ujian terbina dalam percubaan dalam Node.js versi 18 dan menjadikan pelari ujian stabil dalam Node.js versi 20.

Pelari ujian menawarkan beberapa ciri, seperti:

  • Pustaka penegasan

  • Uji cangkuk

  • Fungsi mengejek

  • Liputan kod

  • Pemberita ujian

  • Ujian tak segerak

Mengapa Menggunakan Node.js Test Runner?

Pelari ujian asli dalam Node.js menyediakan beberapa kelebihan untuk ujian automasi JavaScript. Digariskan di bawah adalah beberapa faedah menggunakan pelari ujian ini:

  • Pelari ujian memperkemas proses ujian untuk pembangun dan penguji dengan menjimatkan masa dalam menentukan alat yang hendak digunakan, kerana ia disepadukan dalam Node.js sendiri.

  • Pustaka penegasan terbina dalam dalam pelari ujian Node.js memudahkan proses menulis ujian dan mendapatkan keputusan ujian tanpa perlu memasang perpustakaan penegasan lain.

  • Pelari ujian menyertakan ciri untuk liputan kod untuk memastikan semua bahagian kod diuji dengan menentukan bahagian yang belum diuji lagi.

  • Pelari ujian asli mempunyai ciri yang dipanggil mod jam tangan yang membolehkannya memantau perubahan dalam fail ujian dan kebergantungannya. Jika sebarang perubahan dikesan, pelari ujian akan menjalankan semula ujian yang terjejas oleh pengubahsuaian secara automatik.

  • Pengujian menggunakan Node.js membolehkan penggunaan olok-olok, stub dan pengintip yang penting untuk menguji komponen individu secara berasingan daripada keseluruhan perisian.

Bagaimana untuk Bermula Dengan Node.js Test Runner?

Dalam bahagian catatan blog ini, anda akan belajar cara mula menggunakan pelari ujian terbina dalam Node.js dan menjalankan skrip ujian anda dengan jayanya.

Untuk bermula, ikut arahan ini;

  1. Pastikan anda menggunakan Node.js versi 20 atau lebih tinggi kerana pelari ujian telah disepadukan sepenuhnya ke dalam teras Node.js sejak keluaran versi 20.

  2. Buat direktori TestRunner dan lancarkannya menggunakan Persekitaran Pembangunan Bersepadu (IDE) anda. Sebagai contoh, dalam senario ini, kami telah menggunakan Kod VS.

Jalankan arahan berikut dalam terminal untuk menyediakan projek Node.js:

    npm init -y
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Buat dua folder baharu bernama src dan ujian dalam direktori TestRunner.

Kemas kini skrip ujian dalam fail package.json anda dengan coretan kod berikut:

    "scripts": {
        "test": "node --test TestRunner/tests/"
      },
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pasang Selenium WebDriver dengan menjalankan arahan di bawah:

    npm install selenium-webdriver
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk


`

Jalankan arahan yang diberikan di bawah untuk memasang ChromeDriver:


npm pasang chromedriver

Buat fail starting.test.js baharu dalam folder ujian. Kemudian, tambahkan kod berikut pada fail:

`
const { Builder, By, Key, until } = require("selenium-webdriver");
const assert = memerlukan("assert").ketat;
const { ujian } = memerlukan ("nod: ujian");

{
  let driver;


  test("Setup WebDriver for Google Search Test Suite", async (t) => {
    driver = await new Builder().forBrowser("chrome").build();
  });


  test("Navigate to Google and verify title", async (t) => {
    await driver.get("http://www.google.com");
    const title = await driver.getTitle();
    assert.strictEqual(title, "Google");
  });


  test("Cleanup after Google Search Test Suite", async (t) => {
    await driver.quit();
  });
}
Salin selepas log masuk
Salin selepas log masuk

`

Cara Menggunakan Node.js Test Runner: Panduan Terperinci

Kod di atas mengimport fungsi yang diperlukan daripada node:test dan node:assert dan menerangkan ujian mudah yang menavigasi ke Google dan mengesahkan tajuk.

Jalankan arahan yang diberikan di bawah untuk melaksanakan ujian:


ujian nod/started.test.js

Menggunakan describe() dan it() Blocks

Dalam pelari ujian Node.js, anda boleh menggunakan blok describe() dan it() untuk menjalankan ujian. Blok describe() digunakan untuk mengisytiharkan suite yang menyusun dan mengumpulkan ujian berkaitan bersama, manakala blok it() digunakan untuk mengisytiharkan ujian.

Faedah menggunakan blok describe()/it() ialah ia menyediakan cara untuk mengatur ujian anda ke dalam blok fungsi atau ciri yang berkaitan. Ini berguna untuk suite ujian yang lebih besar, di mana anda ingin memastikan ujian disusun dengan kemas dan dikumpulkan secara logik.

Di dalam blok describe(), anda boleh mempunyai berbilang blok test() atau it() yang mentakrifkan kes ujian tertentu. Anda juga boleh meletakkan describe() blok dalam satu sama lain untuk membuat subkumpulan ujian untuk organisasi yang lebih terperinci.

Anda boleh menulis ujian menggunakan blok describe() dan it(), seperti yang ditunjukkan di bawah.

Buat fail describeit.test.js dalam direktori ujian dan masukkan coretan kod yang disediakan di bawah:

`
describe("Borang Ujian Input", async () => {
biarkan pemandu;

  await it("Setup WebDriver", async () => {
    driver = await new Builder().forBrowser("chrome").build();
  });


  await it("should input values in a form and check their sum", async () => {
    await driver.get("https://www.lambdatest.com/selenium-playground/simple-form-demo");


    await driver.findElement(By.id("sum1")).sendKeys(2);
    await driver.findElement(By.id("sum2")).sendKeys(3);
    await driver.findElement(By.xpath("//button[normalize-space()='Get Sum']")).click();


    let sum = await driver.wait(until.elementLocated(By.id("addmessage")),10000);
    let sumNo = await sum.getText();
    assert.strictEqual(sumNo, "5");
  });


  await it("Cleanup: Close the browser", async () => {
    await driver.quit();
  });
});
Salin selepas log masuk

`

Jalankan arahan yang diberikan di bawah untuk melaksanakan ujian:


ujian nod/describeit.test.js

Ponteng Ujian

Pelari ujian Node.js juga membenarkan anda melangkau ujian. Anda boleh melangkau ujian jika ia tidak berfungsi, ciri yang diuji sedang dalam pembangunan aktif, ujian bergantung pada kebergantungan luaran yang tidak tersedia atau ujian adalah pada ciri yang tidak digunakan.

Ujian individu boleh dilangkau dengan menghantar pilihan langkau kepada ujian atau dengan memanggil anotasi skip() konteks ujian. Anotasi untuk mengelak daripada menjalankan ujian dalam pelari ujian terbina dalam terdiri daripada penunjuk, seperti skip:true, skip;'Ujian ini dilangkau', t.skip( ), dan t.skip("Ujian ini dilangkau") seperti yang digambarkan dalam ini contoh.

  1. Buat fail skipping.test.js dalam direktori ujian dan masukkan coretan kod yang disediakan di bawah.

`
describe("Nilai Jangkaan Sama Tegas", async () => {
biarkan pemandu;
pemandu = tunggu Builder baharu().forBrowser("chrome").build();
it("sepatutnya sama rata", async () => {
tunggu driver.get("http://www.google.com");
tajuk const = tunggu driver.getTitle();
assert.strictEqual(tajuk, "Google");
});

    npm init -y
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

`

  1. Jalankan arahan yang diberikan di bawah untuk melaksanakan ujian:


ujian nod/skipping.test.js

Menggunakan Cangkuk Ujian

Pelari ujian Node.js menyediakan cangkuk ujian yang berbeza. Cangkuk ialah fungsi yang berjalan sejurus sebelum atau sejurus selepas ujian. Cangkuk yang tersedia dalam pelari ujian Node.js ialah before(), beforeEach(), after() dan afterEach().

Berikut ialah beberapa contoh cara menggunakan cangkuk ini:

**sebelum() *Kail*

Cangkuk sebelum() digunakan untuk menyediakan persekitaran ujian di mana ia dijalankan sekali sebelum semua ujian dalam blok terangkan. Sebagai contoh, anda boleh menggunakan cangkuk before() untuk menyediakan WebDriver sebelum semua ujian anda dilaksanakan.

Di bawah ialah cara menggunakan cangkuk sebelum():

  1. Buat fail beforehook.test.js dalam direktori ujian dan masukkan coretan kod yang disediakan di bawah:

`
describe("Ujian Tajuk Demo Borang Mudah", async () => {
biarkan pemandu;

    "scripts": {
        "test": "node --test TestRunner/tests/"
      },
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

`

  1. Jalankan arahan yang diberikan di bawah untuk melaksanakan ujian:


ujian nod/beforehook.test.js

**beforeEach() *Cangkuk*

Cangkuk beforeEach() dijalankan sekali sebelum setiap ujian, di mana ia digunakan untuk mengasingkan ujian supaya ia tidak menjejaskan satu sama lain. Contohnya, jika anda perlu melawat URL halaman tertentu untuk beberapa ujian, anda boleh menggunakan cangkuk beforeEach() untuk membuka halaman URL sebelum setiap ujian dilaksanakan.

Di bawah ialah cara menggunakan cangkuk beforeEach():

  1. Buat fail beforeEachhook.test.js dalam direktori ujian dan masukkan coretan kod yang disediakan di bawah:

`
describe("Ujian Demo Borang Mudah", async () => {
biarkan pemandu;

    npm install selenium-webdriver
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

`

  1. Jalankan arahan yang diberikan di bawah untuk melaksanakan ujian:


ujian nod/beforeEachhook.test.js

**selepas() *Kail*

Cangkuk after() dijalankan sekali selepas pelaksanaan semua ujian yang digunakan untuk melakukan tindakan pembersihan selepas semua ujian dilaksanakan. Contohnya, jika anda ingin menutup WebDriver selepas ujian dilaksanakan, anda boleh menggunakan cangkuk after().

Di bawah ialah cara menggunakan cangkuk selepas():

  1. Buat fail afterhook.test.js dalam direktori ujian dan masukkan coretan kod yang disediakan di bawah:

`
describe("Ujian Demo Borang Mudah", async () => {
biarkan pemandu;

    npm init -y
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

`

  1. Jalankan arahan yang diberikan di bawah untuk melaksanakan ujian:


ujian nod/afterhook.test.js

**afterEach() *Kail*

Cangkuk afterEach() dijalankan sekali selepas setiap ujian. Ia digunakan untuk melakukan tindakan pembersihan selepas setiap ujian. Contohnya, jika anda ingin mengosongkan kuki selepas setiap ujian, anda boleh menggunakan cangkuk afterEach().

Buat fail afterEachhook.test.js dalam direktori ujian dan masukkan coretan kod yang disediakan di bawah:

`
const { Builder, By, Key, until } = require("selenium-webdriver");
const assert = memerlukan("assert").ketat;
const {
huraikan,
ia,
sebelum ini,
sebelumSetiap,
selepas,
selepasSetiap,
} = memerlukan("nod:test");

    "scripts": {
        "test": "node --test TestRunner/tests/"
      },
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

`

Jalankan arahan yang diberikan di bawah untuk melaksanakan ujian:


ujian nod/afterEachhook.test.js

Melaksanakan Olok-olok

Fungsi mengejek terbina dalam pelari ujian Node.js membolehkan anda mengejek dan menggantikan fungsi semasa situasi ujian di mana kebergantungan luaran atau pakej pihak ketiga sedang digunakan. Ia amat berguna apabila kebergantungan tersebut masih dalam fasa pembangunan.

Anda boleh menggunakan fungsi mengejek untuk mencipta pengintip dan stub. Di bawah ialah contoh yang menggambarkan penggunaan fungsi mengejek untuk mengesahkan pengambilan data daripada API:

Mula-mula, pasang axios, klien HTTP berasaskan janji untuk penyemak imbas dan Node.js, menggunakan arahan yang diberikan di bawah:


npm pasang axios

Kemudian, buat fail index.js dan tambah kod berikut:

`
const axios = memerlukan("axios");

    npm install selenium-webdriver
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

`

Kod di atas melaksanakan kelas MakeRequest, yang mempunyai tiga fungsi fetchDataFromAPI(), slugifyTitle() dan addToDB().

Kemudian, buat fail mock.test.js dan tambah kod berikut:

`
// Menghuraikan ujian yang berkaitan dengan mengejek
describe("Ujian Mengejek", async () => {
// Menetapkan semula ejekan sebelum setiap ujian
beforeEach(() => mock.restoreAll());

{
  let driver;


  test("Setup WebDriver for Google Search Test Suite", async (t) => {
    driver = await new Builder().forBrowser("chrome").build();
  });


  test("Navigate to Google and verify title", async (t) => {
    await driver.get("http://www.google.com");
    const title = await driver.getTitle();
    assert.strictEqual(title, "Google");
  });


  test("Cleanup after Google Search Test Suite", async (t) => {
    await driver.quit();
  });
}
Salin selepas log masuk
Salin selepas log masuk

`

Dalam kod di atas, kaedah fetchDataFromAPI diejek daripada kelas MakeRequest.

Untuk menghalang fungsi daripada membuat permintaan rangkaian, kaedah mockImplementation() digunakan untuk mengembalikan output yang dipratentukan, yang boleh diuji untuk nilai tertentu.

Akhir sekali, mock.method() digunakan untuk mencipta pengintip untuk menguji jika fungsi slugifyTitle() dipanggil. Juga, berapa kali fungsi dipanggil dan outputnya diuji berdasarkan tajuk.

Jalankan ujian menggunakan arahan yang diberikan di bawah:


ujian nod/mock.test.js

Menjalankan Ujian Selari

Node.js test runner membolehkan anda melaksanakan berbilang ujian secara selari dan pada masa yang sama dan bukannya menjalankannya secara berurutan.

Untuk menjalankan ujian secara selari dalam pelari ujian Node.js, anda perlu melepasi parameter concurrency: true sebagai argumen kedua kepada fungsi describe().

Di bawah ialah contoh cara menjalankan ujian secara selari menggunakan pelari ujian asli Node.js dan Selenium menggunakan parameter serentak.

Buat fail parallel.test.js dalam folder tests dan tambahkan kod berikut:

`
describe("Ujian Tapak E-dagang", { concurrency: true }, async () => {
biarkan pemandu;

    npm init -y
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

`

Jalankan arahan yang diberikan di bawah untuk menjalankan ujian:


ujian nod/parallel.test.js

Pelaksanaan ujian di atas dilakukan pada grid tempatan. Walau bagaimanapun, untuk menskalakan ujian automasi anda dengan Node.js, anda boleh mempertimbangkan untuk menggunakan pendekatan ujian berasaskan awan.

Platform pelaksanaan ujian dipacu AI seperti LambdaTest membolehkan anda menjalankan ujian Node.js pada infrastruktur awan automasi boleh skala, memastikan keserasian dan kebolehpercayaan.

Kesimpulan

Ringkasnya, pelari ujian Node.js menawarkan penyelesaian ringan untuk mencipta dan melaksanakan ujian automatik dalam projek web anda. Walaupun ia mungkin tidak menyertakan semua fungsi yang terdapat dalam rangka kerja ujian popular, kesederhanaan dan sifat mesra pengguna menjadikannya pilihan yang sangat baik untuk memulakan ujian automatik.

Blog ini membincangkan ciri pelari ujian terbina dalam Node.js. Ia merangkumi cara membuat ujian menggunakan fungsi describe() dan sintaksnya sambil menggunakan cangkuk untuk operasi persediaan dan teardown, serta mengejek dan menjalankan ujian dalam urutan selari secara serentak untuk jaminan kualiti dan kestabilan kod JavaScript tujuan peningkatan.

Untuk situasi ujian yang rumit, anda mungkin mahu menilai pelari ujian lalai terhadap rangka kerja popular seperti Mocha, Jasmine atau Jest untuk menentukan yang mana satu paling sesuai dengan keperluan anda.

Atas ialah kandungan terperinci Cara Menggunakan Node.js Test Runner: Panduan Terperinci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan