Rumah > hujung hadapan web > tutorial js > Malar Mengejek dalam Ujian dengan Jest: Contoh Praktikal

Malar Mengejek dalam Ujian dengan Jest: Contoh Praktikal

Barbara Streisand
Lepaskan: 2025-01-11 08:53:42
asal
277 orang telah melayarinya

Mockando Constantes em Testes com Jest: Um Exemplo Prático

Apabila bekerja dengan pemalar dalam projek anda, kadangkala perlu menukar nilainya untuk menguji senario yang berbeza. Walau bagaimanapun, pemalar yang diimport secara langsung tidak boleh ditimpa dengan mudah, yang boleh menyukarkan penciptaan ujian. Dalam artikel ini, kita akan melihat cara menggunakan Jest untuk mengejek pemalar secara dinamik, memastikan ujian terpencil dan boleh dipercayai.

Mari kita cipta contoh rekaan yang dipanggil adjustImageQuality, di mana kita melaraskan kualiti imej bergantung pada sama ada kita berada dalam persekitaran pengeluaran.


Perlaksanaan

fail constants.js

Kami mentakrifkan pemalar yang dipanggil IS_PRODUCTION yang menunjukkan sama ada kami berada dalam persekitaran pengeluaran:

// constants.js
export const IS_PRODUCTION = false;
Salin selepas log masuk

adjustImageQuality.js fail

Kini, kami mencipta fungsi adjustImageQuality. Ia mengubah kualiti imej hanya jika sistem sedang dalam pengeluaran:

// adjustImageQuality.js
import { IS_PRODUCTION } from "./constants";

export default function adjustImageQuality(img) {
  if (IS_PRODUCTION) {
    img.quality = 100; // Qualidade máxima em produção
  } else {
    img.quality = 50; // Qualidade reduzida em desenvolvimento
  }

  return img;
}
Salin selepas log masuk

Menulis Ujian

Kami ingin menguji gelagat adjustImageQuality untuk kedua-dua senario: pengeluaran (IS_PRODUCTION = benar) dan pembangunan (IS_PRODUCTION = palsu).

adjustImageQuality.test.js fail

Kami menggunakan Jest untuk mengejek nilai IS_PRODUCTION secara dinamik. Rahsianya ialah menggunakan jest.mock dan mengatasi pemalar dengan getter tersuai.

// adjustImageQuality.test.js
import adjustImageQuality from "./adjustImageQuality";

// Mock para a constante IS_PRODUCTION
const mockIsProduction = jest.fn();

jest.mock("./constants", () => {
  const constants = jest.requireActual("./constants");
  return {
    ...constants,
    get IS_PRODUCTION() {
      return mockIsProduction();
    },
  };
});

beforeEach(() => {
  mockIsProduction.mockClear(); // Limpa os mocks antes de cada teste
});

test("sets image quality to 100 in production", () => {
  // Configura o mock para retornar true (produção)
  mockIsProduction.mockReturnValue(true);

  const img = { quality: 0 };

  const result = adjustImageQuality(img);

  expect(result.quality).toEqual(100);
});

test("sets image quality to 50 in development", () => {
  // Configura o mock para retornar false (desenvolvimento)
  mockIsProduction.mockReturnValue(false);

  const img = { quality: 0 };

  const result = adjustImageQuality(img);

  expect(result.quality).toEqual(50);
});
Salin selepas log masuk

Penjelasan Olok-olok

1. Mencipta Olok-olok

Kami menggunakan jest.mock untuk memintas modul pemalar. Di dalamnya, kami menggunakan jest.requireActual untuk mendapatkan eksport sebenar dan menambah pengambil untuk IS_PRODUCTION yang berterusan.

jest.mock("./constants", () => {
  const constants = jest.requireActual("./constants");
  return {
    ...constants,
    get IS_PRODUCTION() {
      return mockIsProduction();
    },
  };
});
Salin selepas log masuk

2. Mengejek Nilai IS_PRODUCTION

Dalam setiap ujian, kami menggunakan mockReturnValue untuk mensimulasikan nilai berbeza untuk IS_PRODUCTION:

  • mockIsProduction.mockReturnValue(true) untuk pengeluaran.
  • mockIsProduction.mockReturnValue(false) untuk pembangunan.

3. Membersih dengan mockClear

Sebelum setiap ujian, kami mengosongkan keadaan olok-olok untuk memastikan ia tidak mengganggu ujian lain:

beforeEach(() => {
  mockIsProduction.mockClear();
});
Salin selepas log masuk

Kesimpulan

Corak olok-olok untuk pemalar ini membolehkan anda mengawal nilai secara dinamik yang digunakan dalam logik aplikasi anda, memastikan ujian terpencil dan boleh dipercayai. Ia amat berguna apabila anda perlu menguji gelagat berdasarkan pembolehubah global, konfigurasi atau keadaan sistem.

Dengan pendekatan ini, anda boleh merangkumi senario yang kompleks tanpa menjejaskan struktur kod anda atau menambah kebergantungan luaran yang tidak perlu.

Atas ialah kandungan terperinci Malar Mengejek dalam Ujian dengan Jest: Contoh Praktikal. 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