Heim > Web-Frontend > js-Tutorial > Konstanten in Tests mit Scherz verspotten: Ein praktisches Beispiel

Konstanten in Tests mit Scherz verspotten: Ein praktisches Beispiel

Barbara Streisand
Freigeben: 2025-01-11 08:53:42
Original
343 Leute haben es durchsucht

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

Wenn Sie in Ihren Projekten mit Konstanten arbeiten, ist es manchmal notwendig, deren Werte zu ändern, um verschiedene Szenarien zu testen. Allerdings können direkt importierte Konstanten nicht einfach überschrieben werden, was die Testerstellung erschweren kann. In diesem Artikel erfahren Sie, wie Sie Jest verwenden, um Konstanten dynamisch zu verspotten und so isolierte und zuverlässige Tests sicherzustellen.

Lassen Sie uns ein fiktives Beispiel namens „adjustImageQuality“ erstellen, in dem wir die Qualität eines Bildes abhängig davon anpassen, ob wir uns in einer Produktionsumgebung befinden.


Durchführung

Constants.js-Datei

Wir definieren eine Konstante namens IS_PRODUCTION, die angibt, ob wir uns in einer Produktionsumgebung befinden:

// constants.js
export const IS_PRODUCTION = false;
Nach dem Login kopieren

Datei „adjustImageQuality.js“.

Jetzt erstellen wir die Funktion „adjustImageQuality“. Die Bildqualität ändert sich nur, wenn das System in Produktion ist:

// 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;
}
Nach dem Login kopieren

Schreiben der Tests

Wir wollen das Verhalten von adjustImageQuality für beide Szenarien testen: Produktion (IS_PRODUCTION = true) und Entwicklung (IS_PRODUCTION = false).

AdjustImageQuality.test.js-Datei

Wir verwenden Jest, um den Wert von IS_PRODUCTION dynamisch zu verspotten. Das Geheimnis besteht darin, jest.mock zu verwenden und die Konstante mit einem benutzerdefinierten Getter zu überschreiben.

// 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);
});
Nach dem Login kopieren

Scheinerklärung

1. Den Mock erstellen

Wir verwenden jest.mock, um das Konstantenmodul abzufangen. Darin verwenden wir jest.requireActual, um die tatsächlichen Exporte abzurufen und fügen einen Getter für die Konstante IS_PRODUCTION hinzu.

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

2. Den Wert von IS_PRODUCTION verspotten

In jedem Test verwenden wir MockReturnValue, um verschiedene Werte für IS_PRODUCTION zu simulieren:

  • mockIsProduction.mockReturnValue(true) für die Produktion.
  • mockIsProduction.mockReturnValue(false) für die Entwicklung.

3. Reinigung mit MockClear

Vor jedem Test löschen wir den Scheinstatus, um sicherzustellen, dass er andere Tests nicht beeinträchtigt:

beforeEach(() => {
  mockIsProduction.mockClear();
});
Nach dem Login kopieren

Abschluss

Mit diesem Scheinmuster für Konstanten können Sie die in Ihrer Anwendungslogik verwendeten Werte dynamisch steuern und so isolierte und zuverlässige Tests gewährleisten. Dies ist besonders nützlich, wenn Sie Verhaltensweisen basierend auf globalen Variablen, Konfigurationen oder Systemzuständen testen müssen.

Mit diesem Ansatz können Sie komplexe Szenarien abdecken, ohne die Struktur Ihres Codes zu beeinträchtigen oder unnötige externe Abhängigkeiten hinzuzufügen.

Das obige ist der detaillierte Inhalt vonKonstanten in Tests mit Scherz verspotten: Ein praktisches Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage