web-dev-qa-db-ja.com

Flowで検証されたJestテストを書く正しい方法は何ですか?

人々は一般に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をさせることは役に立たないようです。

44
Trevor Robinson

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
  }
}
32
Kutyel

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はまったく同じように動作するはずです。

12
Hinrich

Create-react-appを使用してプロジェクトを作成した場合は、手動でjestをpackages.jsonに追加する必要があります。そうしないと、create-react-appはこの依存関係をpackages.jsonに追加しないため、flow-typedは必要なタイプ定義をインストールしません。

yarn add --dev jest
flow-typed install
7
Jan Kühnlein

おもう declare var jest: any;は、トリックを実行する必要があります(各テストファイルの先頭、またはフローlibディレクトリのどこかに配置します)。

0
Nikita

ワンライナーとして実行することもできます。どうぞ:

npm i -D flow-typed && npx flow-typed install jest@"$(npx jest -v)"
0
uloco