reactjs - Korištenje Storybook-a i Vitest-a, simulacija modula baca iznimku


Imam Storybook postavku koja koristi vitest, i želim izmockati modul u priči pomoću vitesta, pa dodajem sljedeće na vrh svoje datoteke s pričama:

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

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

// the actual stories below here...

Ali kada pokrenem ovu priču, pojavljuje se sljedeća pogreška:

Nije moguće čitati svojstva nedefiniranog (čitanje 'customEqualityTesters')

Sada, stack-trace prikazuje da se pogreška javlja u http://localhost:6006/node_modules/.cache/storybook/ea2884736a0b9e4a130cf856017239193d1095a3a808f644c6f79a05cc61ea0f/sb-vite/deps/vitest.js?v=6cfb0e39, ali kada pogledam ovaj redak, vidim sljedeće (na retku 10869):

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

Pregledavajući globalThis, nema unosa za JEST_MATCHER_OBJECT (deklarirano u liniji 10773 kao var JEST_MATCHERS_OBJECT=Symbol.for("$$jest-matchers-object");):

Nisam potpuno siguran koliko Jest Vitest koristi, ali nedostaje li mi neki dependency koji ubacuje svojstvo jest-match-object u globalThis?

Odgovor #1

Iskusio sam ovaj problem i otkrio da je uzrok bio uvođenje vitesta u .stories datoteku. Uklanjanje vitesta kao uvezene ovisnosti riješilo je problem.