reactjs - Používanie Storybook a Vitest, simulovanie modulu vyvolá výnimku


Mám nastavený Storybook s použitím vitest a chcem v príbehu pomocou vitest namiesto modulu vytvoriť mock, takže pridám nasledovné na začiatok súboru s príbehmi:

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

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

// the actual stories below here...

Ale keď spustím tento príbeh, zobrazí sa nasledujúca chyba:

Nie je možné čítať vlastnosti nedefinovaného (čítanie 'customEqualityTesters')

Teraz stack-trace ukazuje, že chyba je vyhodená v http://localhost:6006/node_modules/.cache/storybook/ea2884736a0b9e4a130cf856017239193d1095a3a808f644c6f79a05cc61ea0f/sb-vite/deps/vitest.js?v=6cfb0e39, ale keď sa pozriem na tento riadok, vidím nasledovné (na riadku 10869):

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

Pri prehliadaní globalThis nemá položku pre JEST_MATCHER_OBJECT (deklarovanú na riadku 10773 ako var JEST_MATCHERS_OBJECT=Symbol.for("$$jest-matchers-object");):

Nie som si úplne istý, koľko jest vitest používa, ale chýba mi nejaká závislosť, ktorá injektuje vlastnosť jest-match-object do globalThis?

Odpoveď č. 1

Zažil som tento problém a zistil som, že príčinou bolo importovanie vitest do súboru .stories. Odstránenie vitest ako importovanej závislosti problém vyriešilo.