reactjs - kan jeg bruke tsx-utvidelsen for testfiler hvis jeg bruker react med typescript
Jeg har en React-applikasjon i React Redux med TypeScript. Jeg bruker Jest for å skrive tester. Jeg er usikker på hva som bør være filtypen for testfiler i henhold til konvensjon, om det skal være js/ts eller tsx.
Enhver ledetråd vil bli satt pris på.
Svar #1
Kan jeg bruke
tsx-utvidelsen for testfiler hvis jeg bruker React med TypeScript?
Ja. Du kan bruke *.tsx-utvidelsen for testfiler hvis du bruker React med TypeScript.
Enhver ledetråd vil bli satt pris på.
Det finnes flere måter å sette opp jest med TypeScript på. For ett eksempel kan du prøve å kjøre dette skriptet fra en terminal:
npx create-react-app my-app --typescript
cd my-app
npm run eject
Det vil generere et prosjekt som er konfigurert til å kjøre tester med *.tsx-utvidelsen. Du kan se dens jest-konfigurasjon inne i src/package.json-filen og en eksempeltest inne i src/App.test.tsx-filen. Sistnevnte ser slik ut:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});
Svar #2
Du bør bruke .test.tsx-utvidelsen hvis en testfil inneholder innebygd XML-lignende JSX-kode (men ikke fordi du tester en komponent).
Ifølge Er det noen ulempe ved å bruke .tsx i stedet for .ts hele tiden i TypeScript?
Med .tsx-filene kunne du bruke all JSX (JavaScript XML) kode.
I .ts-filen kan du bare bruke TypeScript.
Hvis du har en test skrevet i ren Typescript, er .test.tsx en feil filendelse.
Utvidelser brukes til å beskrive typen innhold i filen. Hvis det er en testfil skrevet i TypeScript, bør den være .test.ts, hvis den er skrevet i JavaScript, bør den være .test.js.
Utvidelsen indikerer en egenskap ved filinnholdet eller dens tiltenkte bruk. Fra https://en.wikipedia.org/wiki/Filename_extension
Hvis du prøver å bruke .test.ts-utvidelsen med testfiler som inkluderer jsx/html-elementer, kan det forårsake feil som beskrevet i "Navbar refererer til en verdi, men brukes som en type her" når du prøver å gjengi en grunn kopi av komponenten min under testing. For slike filer er det hensiktsmessig å bruke .test.tsx.
Merk at for JavaScript er .test.js-utvidelsen bra for enhver type tester, med eller uten Jsx-elementer
