typescript - Hur man mockar en modul som innehåller ett snedstreck?
Att mocka ett standard npm-projekt är enkelt. Skapa en __mocks__-mapp bredvid node_modules-mappen, sedan lägger du paketets namn som fil och skriver mockinnehållet däri.
Exempel: /__mocks__/axios.ts
Det jag sitter fast med är att ha ett npm-paketimport som ser ut så här: @auth0/auth0-react
Hur kan jag imitera innehållet i den här filen? Jag försökte skapa en fil med namnet @auth0/auth0-react.tsx men jest verkar inte plocka upp den imiterade filen. När jag importerar import { Auth0Provider } from '@auth0/auth0-react'; och console.log(Auth0Provider), får jag bara de vanliga Jest.fn() attributen.
Här är innehållet i den simulerade filen
/* eslint-disable import/prefer-default-export */
export const Auth0Provider = (component: JSX.Element): JSX.Element => component;
Eftersom jag inte använde jest.fn() på denna ena metod, förväntar jag mig att console.log(Auth0Provider) visar att den innehåller en funktion.
I min testkod har jag jest.mock('@auth0/auth0-react') innan mitt test. Några idéer?
Svar #1
Jag hittade lösningen via en annan StackOverflow-fråga av kcarra.
För att sammanfatta svaret kommer jag att besvara det med 2 punkter:
Katalogen
__mocks__måste vara i närheten av filen som testas. Om din fil ligger under /src/MyComponent, då bör sökvägen för mocks-mappen vara/src/__mocks__/.Mappstrukturen under
__mocks__måste efterlikna sökvägen som visas i din import. I mitt scenario behöver jag skapa en mapp som heter@auth0och sedan en fil som heterauth0-react.tsxi den mappen.
Här är hur jag strukturerade mina test- och mockfiler.
- mocks:
/src/__mocks__/@auth0/auth0-react.tsx - tester:
/src/__tests__/MyComponent.tsx - Faktisk komponentfil:
/src/MyComponent.tsx