reactjs - Bruke Storybook og Vitest, mocke en modul gir unntak


Jeg har en Storybook-oppsett som bruker vitest, og jeg vil mocke en modul i en historie ved hjelp av vitest, så jeg legger til følgende øverst i min stories-fil:

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

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

// the actual stories below here...

Men når jeg kjører denne historien, oppstår følgende feil:

Kan ikke lese egenskaper av undefined (leser 'customEqualityTesters')

Nå viser stack-tracen at feilen oppstår i http://localhost:6006/node_modules/.cache/storybook/ea2884736a0b9e4a130cf856017239193d1095a3a808f644c6f79a05cc61ea0f/sb-vite/deps/vitest.js?v=6cfb0e39, men når jeg ser på denne linjen, ser jeg følgende (på linje 10869):

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

Når man inspiserer globalThis, har det ikke en oppføring for JEST_MATCHER_OBJECT (deklarert på linje 10773 som var JEST_MATCHERS_OBJECT=Symbol.for("$$jest-matchers-object");):

Jeg er ikke helt sikker på hvor mye Jest Vitest bruker, men mangler jeg noen avhengighet som injiserer jest-match-object-egenskapen i globalThis?

Svar #1

Jeg opplevde dette problemet og fant ut at årsaken var importering av vitest i .stories-filen. Å fjerne vitest som en importert avhengighet løste problemet.