Ricerca nel sito web

reactjs - Usando Storybook e Vitest, fare il mock di un modulo genera un'eccezione


Ho una configurazione di Storybook che utilizza vitest e voglio simulare un modulo in una storia tramite vitest, quindi aggiungo quanto segue all'inizio del mio file di storie:

// my-nice-function.stories.tsx
import { vi } from "vitest";

vi.mock("../some-module", () => ({
  someFunction: vi.fn(),
}));

// the actual stories below here...

Ma quando eseguo questa storia, viene generato il seguente errore:

Impossibile leggere le proprietà di undefined (lettura di 'customEqualityTesters')

Ora, lo stack-trace mostra che l'errore viene generato in http://localhost:6006/node_modules/.cache/storybook/ea2884736a0b9e4a130cf856017239193d1095a3a808f644c6f79a05cc61ea0f/sb-vite/deps/vitest.js?v=6cfb0e39, ma quando guardo questa linea, vedo quanto segue (alla linea 10869):

function getCustomEqualityTesters() {
  return globalThis[JEST_MATCHERS_OBJECT].customEqualityTesters;
}

Ispezionando globalThis, non ha una voce per JEST_MATCHER_OBJECT (dichiarata alla riga 10773 come var JEST_MATCHERS_OBJECT=Symbol.for("$$jest-matchers-object");):

Non sono del tutto sicuro di quanto Jest utilizzi Vitest, ma mi manca qualche dipendenza che inietta la proprietà jest-match-object in globalThis?

Risposta n. 1

Ho riscontrato questo problema e ho scoperto che la causa era l'importazione di vitest nel file .stories. Rimuovere vitest come dipendenza importata ha risolto il problema.