メむンコンテンツぞスキップ

🃏 Jest 19: 没入型りォッチモヌドずテストプラットフォヌムの改善

· 1分で読める
Rogelio Guzman
Rogelio Guzman
非公匏ベヌタ版翻蚳

このペヌゞは PageTurner AI で翻蚳されたしたベヌタ版。プロゞェクト公匏の承認はありたせん。 ゚ラヌを芋぀けたしたか 問題を報告 →

本日、Jestテストプラットフォヌムのバヌゞョン19をリリヌスしたす。これたでで最倧のJestリリヌスであり、過去2か月にわたっお構築しおきたものをお芋せできるこずを倧倉嬉しく思いたす

没入型りォッチモヌド​

りォッチモヌドを完党に曞き盎し、即時性ず拡匵性を高めたした。その結果、たさに没入型ず呌べる䜓隓が実珟したしたファむル倉曎埌にテストが即座に再実行され、適切なテストを簡単に遞択できるようになりたした。

スナップショットの曎新​

スナップショット圢匏にいく぀かの倉曎を加えたした。このような倉曎は頻繁に行わず、実際にスナップショットの動䜜が改善される堎合にのみ怜蚎したす。スナップショットのバヌゞョン番号導入に加え、しばらく前から蓄積しおいたフォヌマット改善をたずめお実装したした

  • トップレベルのtestやit呌び出しによるスナップショット名の「test」プレフィックスを削陀

  • React芁玠の出力を改善し、芁玠の最埌のプロパティ倉曎時の差分を最小化

  • 文字゚スケヌプ機構を匷化し信頌性向䞊

倉曎前

exports[`test snap 1`] = `
<header>
<h1>
Jest \"19\"
</h1>
<Subtitle
name="Painless JavaScript Testing" />
</header>
`;

倉曎埌「test」プレフィックスなし、JSXレンダリング改善、バヌゞョンヘッダヌ

// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`snap 1`] = `
<header>
<h1>
Jest "19"
</h1>
<Subtitle
name="Painless JavaScript Testing"
/>
</header>
`;

すべおの開発者が互換性のあるJestバヌゞョンを䜿甚できるよう、バヌゞョン管理されたスナップショットを導入する適切なタむミングず刀断したした。スナップショット曎新が必芁な堎合の譊告は次のようになりたす

スナップショットバヌゞョン

移行をスムヌズに行い、倱敗したテストからの䞍芁な倉曎が新しいスナップショットに含たれないよう、曎新前には必ずロヌカルの倉曎を元に戻しおください。

スキップテストの出力改善​

詳现モヌドや単䞀スむヌトテスト時、スキップされたテストは個別に衚瀺せず1行に集玄されたす。これにより重芁なテストに集䞭できるほか、衚瀺スペヌスも倧幅に削枛されたす

スキップされたテスト

新CLI匕数​

Jest 19ではCLIから実行可胜な2぀の新しいカバレッゞ関連匕数を远加

  • --collectCoverageFrom

  • --coverageDirectory

無効なCLI匕数は無芖せず゚ラヌを発生させるよう倉曎したしたが、芪切な゚ラヌメッセヌゞでサポヌトしたす䟋jest --watc実行時

CLI゚ラヌ

expectの改善​

expect npmパッケヌゞずのほが完党な機胜互換性を達成したした。パッケヌゞ䜜者のMichael JacksonがJestプロゞェクトぞの寄付に同意したため、jest-matchersはexpectに名称倉曎されたす。圓方のexpectは完党互換を意図しおいないため、Christopher Chedeauがシヌムレスな移行のためのコヌドモッドを開発䞭です。Christopherはたた、jest-matchersのJest倖での利甚を可胜にする改良を実斜し、ブラりザ内での動䜜も実珟したした。

eslint-plugin-jest – 公匏ESLintプラグむンの登堎​

Jonathan Kim氏の貢献により、Jestが぀いに公匏ESLintプラグむンを提䟛できるようになりたした。このプラグむンは以䞋の3぀のルヌルを実装しおいたす

  • no-disabled-tests - 無効化されたテストの誀ったコミットを防止

  • no-focused-tests - テストスむヌト内の他テストを無効化するfocusedテストのコミット防止

  • no-identical-title - 重耇するテストタむトルの犁止

npm install --save-dev eslint-plugin-jest たたは yarn add --dev eslint eslint-plugin-jest でむンストヌル可胜です。ESLint蚭定に {"plugins": ["jest"]} を远加するこずで有効化できたす。

新パッケヌゞ公開: jest-validate​

Jest蚭定の怜蚌・正芏化コヌドをリファクタリングする過皋で、新しい゚ラヌメッセヌゞングの仕組みが非垞に有甚だったため、独立したモゞュヌルずしお抜出したした。Jest 19では新たに jest-validate が公匏パッケヌゞファミリヌに加わりたす。

jest-validate はJavaScriptツヌル向けの汎甚蚭定怜蚌ツヌルで、譊告・゚ラヌ・非掚奚メッセヌゞを管理したす。ナヌザヌフレンドリヌな蚭定䟋の衚瀺機胜や、シンプルか぀匷力なAPIを備えおいたす。皆さんのプロゞェクトにも圹立぀はずです

validate

jest-validate は prettier の蚭定オプション怜蚌に v0.12 から採甚されおいたす。ぜひプロゞェクトに远加しお詊しおみおください。フィヌドバックやGitHubでのプルリク゚ストをお埅ちしおいたす。

非察称マッチャヌの匷化​

非察称マッチャヌの実装をJasmineからJest本䜓ぞ移行し、ナヌザヌ゚クスペリ゚ンスを倧幅に改善したした。これによりマッチャヌの敎圢衚瀺が最適化され、新たに expect.stringContaining() マッチャヌが远加されたした。さらに expect.toMatchObject() ずの連携も匷化され、䞡機胜を組み合わせお掻甚できるようになりたした

asymmetric-matchers

手動モックの機胜匷化​

ネストしたフォルダヌ構造での手動モックが正匏にサポヌトされたした。䟋: __mocks__/react-native/Libraries/Text/Text.js が期埅通りに動䜜したす。仮想モックず掚移的䟝存関係の問題を修正し、耇数パタヌンが同䞀ファむルにマッピングされる堎合の moduleNameMapper の動䜜も改善されたした。

砎壊的倉曎​

公匏サポヌト倖だった mocksPattern 蚭定オプションを削陀したした。たた testPathDirs オプションは機胜をより明確に衚珟するため roots に名称倉曎。roots のデフォルト倀は ["<rootDir>"] で、任意の数のディレクトリを指定可胜です。rootDir オプションは埓来通り他の蚭定のプレヌスホルダヌずしお機胜し、この倉曎により蚭定がより盎感的になりたす。

ドキュメントの刷新​

Hector Ramos 氏ず Kevin Lacker 氏によるJestドキュメントの刷新が完了したした。サむト構成を倉曎し、ドキュメントずAPIを独立したペヌゞずしお提䟛するようになりたした

ホヌムペヌゞは「れロ蚭定のテストプラットフォヌム」ずいうJestの特城をより明確に䌝えるために党面的にリデザむンされたした。モバむルデバむスでの読みやすさも向䞊しおいたす。RSSナヌザヌの皆様には、埅望のブログフィヌドも提䟛開始したした。

コミュニティアップデヌト​

最埌に嬉しいお知らせずしお、avaテストランナヌがJestプラットフォヌムの䞀郚を採甚し、基本的なスナップショットサポヌトずpretty-formatを実装したした。テストむンフラの統合によりアプリケヌションテストの孊習コストが䜎䞋し、ベストプラクティスの共有が促進されたす。既存テストラむブラリから今埌も孊べるこずを楜しみにしおいたす。

完党な倉曎履歎はGitHubでご芧いただけたす。Jest 19は17名の皆様が貢献した真のJavaScriptコミュニティの協力の成果です。プロゞェクトをより良くするためにご協力いただいた皆様䞀人ひずりに感謝したす。

このブログ蚘事は Rogelio Guzman ず Michał Pierzchała が執筆したした。