メインコンテンツへスキップ

Jest 13.0: Flow と REPL

· 1分で読める
非公式ベータ版翻訳

このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →

本日、Jestの次期メジャーリリースをお知らせできることを嬉しく思います。今回の大幅な変更は、皆様とFacebookのJavaScriptテストインフラ全体に恩恵をもたらすものです。最も重要な点として、先日Facebookで開催されたJestハッカソンで、Jestの全コードに静的型付けを追加しました。15名のエンジニアが昼夜を問わず作業し、Flowの型をJestに追加するとともに新機能を実装しました。Flow型の導入には二つの目的があります。第一に、私たちはコードは読まれるために書かれると信じています。ほとんどの場合、コードは一度だけ書かれますが、その後何年も何十人もの人々に読まれます。プロジェクトに静的型を追加することでコードのドキュメント化が促進され、Jestのアーキテクチャの一部を説明しやすくなります。第二に、静的型を追加することでメンテナンスが容易になり、Jestの一部を壊れる恐れなく自信を持ってリファクタリングできるようになります。

FlowプロジェクトはFacebook内で大きく進化し、多くのフレームワークとほぼ全てのプロダクトコードで採用されています。採用は驚くほど並列化が可能で、コードベースの十分な部分が適切に型付けされるまでファイル単位で進めることができます。そうするとFlowは真の価値を提供し、大規模な変更を導くのに役立ちます。このプロセスを通じて、多くの細かいエッジケースやバグが発見されました。

lernaの助けを借りて、Jestプロジェクトのモジュール化を継続しました。わずかな設定の更新だけで、Flowとlernaは良好に連携するようになりました。Jestをパッケージに分割したことでモジュール境界の再考が促進され、有用なパッケージをスタンドアロンで提供できるようになりました。jest-runtimejest-repl CLIツールにより、Jestのサンドボックス環境でスクリプトを実行できるようになり、コマンドラインからアプリを実行・デバッグできます。これはFacebookの@providesModuleモジュール規約を使用するプロジェクトで特に便利です。使い始めるには、jest-replをインストールし、普段テストを実行するのと同じフォルダで実行するだけです!また、開発者ツールで一般的な、gitまたはhgのバージョン管理で変更されたファイルを見つけるjest-changed-filesパッケージも公開しました。

新機能と改良点

  • --notify使用時にテスト実行通知を表示する通知プラグインを追加

  • クライアントサイドアプリのテストを作成する場合、package.jsonのbrowserフィールドを持つnpmパッケージを適切に解決するbrowser設定オプションを追加

  • 「テストが見つかりません」メッセージを改良。どのテストが見つかり、どのようにフィルタリングされたかを報告するようになりました

  • モック関数をテストするjest.isMockFunction(jest.fn())を追加

  • テストレポーターの表示を改良し、多数のテスト実行時にテスト失敗のサマリーを追加

  • jest.mock('Module', implementation, {virtual: true})による仮想モジュールのモックをサポート

  • .haste_cacheフォルダを削除。JestはOS推奨の一時ファイル保存場所を使用するようになりました

  • 詳細モードで個々のテストの実行時間を追加

  • Jestでスナップショットを記録する機能を追加。この機能については別途ブログ記事を公開予定です

最後に、Matthew Johnstonによるウェブサイトの完全なリデザインが完了し、webpackとの連携方法に関するドキュメントを追加しました。Happy Jesting!