reactjs - Att använda Storybook och Vitest, att mocka en modul kastar ett undantag


Jag har en Storybook-konfiguration som använder vitest, och jag vill mocka en modul i en story via vitest, så jag lägger till följande högst upp 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 jag kör den här historien uppstår följande fel:

Kan inte läsa egenskaper av undefined (läser 'customEqualityTesters')

Nu visar stack-tracen att felet kastas i http://localhost:6006/node_modules/.cache/storybook/ea2884736a0b9e4a130cf856017239193d1095a3a808f644c6f79a05cc61ea0f/sb-vite/deps/vitest.js?v=6cfb0e39, men när jag tittar på den här raden ser jag följande (på rad 10869):

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

Genom att undersöka globalThis har det ingen post för JEST_MATCHER_OBJECT (deklarerad på rad 10773 som var JEST_MATCHERS_OBJECT=Symbol.for("$$jest-matchers-object");):

Jag är inte helt säker på hur mycket Jest Vitest använder, men saknar jag något beroende som injicerar jest-match-object-egenskapen i globalThis?

Svar #1

Jag upplevde detta problem och upptäckte att orsaken var att importera vitest i .stories-filen. Att ta bort vitest som en importerad beroende löste problemet.