2016-03-09 2 views
34

Я думаю, люди обычно используют Flow and Jest (и React) вместе, но Flow, похоже, не знает о глобальных шарах Jest (или Jasmine). Когда я добавляю // @flow в моих тестах, я получаю ошибки расхода, как это:Каков правильный способ написания тестов Jest, проверенных с помощью 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 

Я мог бы написать интерфейс Flow для Jest/Жасмин, но кажется, что длительный и, как я должен что-то отсутствует. Спуск процесса потока node_modules/jest-cli, похоже, не помогает.

+1

Вы можете создать/установить файл декларации для Jest. Либо [вручную] (https://flowtype.org/docs/declarations.html#pointing-your-project-to-declarations), либо используя [flow-typed] (https://github.com/flowtype/flow-typed): 'string-typed install jest'. Также посмотрите на этот репозиторий, где все настроено: [node-flowtype-templateplate] (https://github.com/jsynowiec/node-flowtype-boilerplate) –

ответ

15

Несмотря на то, что Jest написан с помощью аннотаций потока, они разбивают типы для версии npm, поэтому нам не нужен babel для ее запуска. К счастью, типы уже в проточного типа поэтому решение довольно легко (так же, как указано в комментарии):

npm install -g flow-typed 

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

Хотя я должен добавить эту строку, а к моему .eslintrc.json:

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

И дополнительно добавить его в свой файл .flowconfig следующим образом:

[libs] 
flow-typed 
+6

Это не сработало для меня. WebStorm по-прежнему показывает ошибку потока: идентификатор «это». не удалось разрешить имя Мой проект был создан с помощью приложения create-react-app. У меня нет файла .eslintrc.json – bedouger

+2

Убедитесь, что у вас также есть 'flow-typed' в разделе' .flowconfig' '[libs]', как предлагается [здесь] (https://github.com/styled-components/стилизованная-компонента/проблемы/458 # issuecomment-292932110). –

1

Я думаю, что declare var jest: any; должен сделать трюк (поместить его либо поверх каждого тестового файла, либо где-нибудь в вашем каталоге потока lib).

5

Если вы создали PROJ ect с помощью create-react-app вам нужно вручную добавить jest на ваш пакет.json. В противном случае в типичном потоке не будут установлены необходимые определения типов, потому что приложение create-response-app не добавляет эту зависимость в packages.json.

yarn add --dev jest 
flow-typed install