人々は一般にFlowとJest(およびReact)を一緒に使用すると思いますが、FlowはJest(またはJasmine)グローバルについては知らないようです。 // @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
Jest/Jasmine用のFlowインターフェースを作成することもできますが、それは長く、何かが足りないように思えます。 Flowプロセスにnode_modules/jest-cli
をさせることは役に立たないようです。
Jestはフローアノテーションを使用して記述されていますが、npmバージョンでは型を削除するため、実行するためにbabelは必要ありません。幸いなことに、タイプはすでにflow-typeにあるため、解決策は非常に簡単です(コメントで述べたとおり)。
npm install -g flow-typed
flow-typed install [email protected] # <-- replace the version with the latest
この行も.eslintrc.json
に追加する必要がありましたが:
{
"env": {
"jest": true
}
}
Create-React-Appを使用すると、受け入れられた回答は機能しません。 CRAでjestを設定する方法は次のとおりです。
1。プロジェクトへのフローのインストール
Create-reat-appを使用する場合、 here はこのステップのガイドです。
yarn add -D flow-bin
yarn run flow init
2。 jestフロータイプのインストール
npx flow-typed install jest@22 // maybe you need a different version
(create-react-appを使用する場合、npx jest -v
を使用してjestバージョンを確認できます。)
3。 configにフロータイプの登録
(更新:@Blackがコメントで指摘しているように、このステップは必要ないかもしれません)
.flowconfig
で、libsセクションにflow-typedを追加します。
...
[libs]
flow-typed
...
私は糸を使用していますが、npmはまったく同じように動作するはずです。
Create-react-appを使用してプロジェクトを作成した場合は、手動でjestをpackages.jsonに追加する必要があります。そうしないと、create-react-appはこの依存関係をpackages.jsonに追加しないため、flow-typedは必要なタイプ定義をインストールしません。
yarn add --dev jest
flow-typed install
おもう declare var jest: any;
は、トリックを実行する必要があります(各テストファイルの先頭、またはフローlibディレクトリのどこかに配置します)。
ワンライナーとして実行することもできます。どうぞ:
npm i -D flow-typed && npx flow-typed install jest@"$(npx jest -v)"