2016-03-09 17 views
34

Immagino che le persone usino comunemente Flow e Jest (e React) insieme, ma Flow non sembra conoscere le globali di Jest (o Jasmine). Quando aggiungo // @flow ai miei test, ricevo un errore di portata simile a questo:Qual è il modo giusto per scrivere test di Jest verificati con Flow?

src/__tests__/Thing-test.js:3 
    3: jest.unmock('../Thing') 
    ^^^^ identifier `jest`. Could not resolve name 

src/__tests__/Thing-test.js:7 
    7: describe('Thing',() => { 
    ^^^^^^^^ identifier `describe`. Could not resolve name 

src/__tests__/Thing-test.js:8 
    8: it('does stuff',() => { 
     ^^ identifier `it`. Could not resolve name 

potrei scrivere un interfaccia di flusso per Jest/Jasmine, ma che sembra lungo e come devo essere manca qualcosa. Il processo Letting Flow node_modules/jest-cli non sembra essere di aiuto.

+1

È possibile creare/installare un file di dichiarazione per Jest. O [manualmente] (https://flowtype.org/docs/declarations.html#pointing-your-project-to-declarations) o usando [flow-typed] (https://github.com/flowtype/flow-typed): 'installazione di flusso jest'. Date anche un'occhiata a questo repository dove tutto è configurato: [node-flowtype-boilerplate] (https://github.com/jsynowiec/node-flowtype-boilerplate) –

risposta

15

Sebbene Jest sia stato scritto con le annotazioni di flusso, i tipi di strip sono disponibili per la versione npm, quindi non è necessario Babel per eseguirlo. Fortunatamente i tipi sono già in flusso di tipo quindi la soluzione è abbastanza facile (come menzionato nel commento):

npm install -g flow-typed 

# replace the version with the jest version in your package.json 
flow-typed install [email protected] 

Anche se ho dovuto aggiungere questa linea anche per il mio .eslintrc.json:

{ 
    "env": { 
    "jest": true 
    } 
} 

E inoltre aggiungerlo al file .flowconfig come segue:

[libs] 
flow-typed 
+6

Questo non ha funzionato per me. WebStorm mostra ancora un errore di flusso: identificatore 'it'. impossibile risolvere il nome Il mio progetto è stato impostato con create-react-app. Non ho file .eslintrc.json – bedouger

+2

Assicurati di avere anche 'flow-typed' nella sezione' .flowconfig' '[libs]' come suggerito [qui] (https://github.com/styled-components/componenti stile/temi/458 # issuecomment-292.932.110). –

1

Penso che declare var jest: any; dovrebbe fare il trucco (mettilo sia sopra ogni file di test, o da qualche parte nella directory di flusso lib).

5

Se hai creato il tuo proj ect con create-react-app devi aggiungere manualmente jest ai tuoi pacchetti.json. Altrimenti, la digitazione del flusso non installerà le definizioni dei tipi necessarie perché l'app crea-react non aggiunge questa dipendenza a packages.json.

yarn add --dev jest 
flow-typed install 
Problemi correlati