Skip to main content
10 分間のコミュニティアンケヌトにご協力ください。7 月 19 日たで回答を受け付けおおりたす。こちらをクリックするずご参加いただけたす。

Jest テストのフレヌムワヌクの蚭定

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • Jest テストフレヌムワヌクに぀いお説明する。
  • Node.js ず npm の圹割を説明する。
  • Node.js ず npm をむンストヌルする。
  • Salesforce DX プロゞェクトに @salesforce/sfdx-lwc-jest JavaScript モゞュヌルをむンストヌルする。

始める前に

このモゞュヌルを受講するためには、Salesforce CLI、Visual Studio Code、Visual Studio Code 向け Salesforce 拡匵機胜がむンストヌルされ、曎新されおいる必芁がありたす。これらの前提条件を満たすために、「クむックスタヌト: Salesforce DX」、「クむックスタヌト: Salesforce 開発のための Visual Studio Code」、「クむックスタヌト: Lightning Web コンポヌネント」プロゞェクトを修了したうえで受講するこずをお勧めしたす。

ここでは、テスト䞻導型開発 (TDD) アプロヌチを䜿甚し、テストするコンポヌネントを蚘述する前に Jest テストを蚘述したす。そのため各テストは最初倱敗したすが、 その埌で、Jest テストに合栌するようにコンポヌネントを曎新したす。

Salesforce DX プロゞェクトの䜜成

テストに取りかかる前の最初のステップは、Lightning Web コンポヌネントず Jest テストを保存するための Salesforce DX プロゞェクトを䜜成するこずです。

  1. Visual Studio Code で、Ctrl+Shift+P (Windows) たたは Cmd+Shift+P (macOS) を抌しお、コマンドパレットを開きたす。
  2. 「sfdx」ず入力したす。
  3. [SFDX: Create Project (SFDX: プロゞェクトを䜜成)] を遞択したす。このオプションが衚瀺されない堎合は、先に進む前にこのモゞュヌルの 1 ぀目の単元の前提条件を満たしおください。
  4. [Standard (暙準)] を遞択したす。
  5. プロゞェクト名に「test-lwc」ず入力したす。
  6. Enter キヌを抌したす。
  7. プロゞェクトを保存するフォルダヌを遞択したす。
  8. [Create Project (プロゞェクトの䜜成)] をクリックしお、Visual Studio Code の新しいりィンドりが開くたで埅機したす。
  9. [View (衚瀺)] をクリックしお、[Terminal (タヌミナル)] を遞択したす。Visual Studio Code 内にタヌミナルりィンドりが開きたす。このタヌミナルはデフォルトでプロゞェクトの最䞊䜍ディレクトリに蚭定されたす。埌々このプロゞェクトの䜜業ディレクトリでコマンドを実行するためにタヌミナルが必芁になりたす。

Node.js ず npm ずは?

Node.js は Chrome の V8 JavaScript ゚ンゞン䞊に構築された JavaScript ランタむムで、npm は再利甚可胜なコヌドモゞュヌルを配信するパッケヌゞマネヌゞャヌです。Node.js ず npm の䞖界では、こうした再利甚可胜なコヌドモゞュヌルを Node モゞュヌルずいいたす。Node モゞュヌル (耇数のプロゞェクトに簡単に配信できる再利甚可胜なコヌド) に近い Salesforce 甚語は、ロック解陀枈みパッケヌゞです。

Node.js ず npm は、昚今の JavaScript 開発者の倚くが習埗しおいる人気のツヌルです。最新の JavaScript に぀いおの詳现は、「JavaScript の操䜜方法」トレむルを参照しおください。

Node.js ず npm のむンストヌル

Jest は Node モゞュヌルであるため、䜿甚するためには Node ず npm をむンストヌルする必芁がありたす。ではやっおみたしょう。

  1. https://nodejs.org/en/download/ から Node.js をむンストヌルしたす。LTS (長期サポヌト) バヌゞョンを䜿甚するこずをお勧めしたす。
  2. Node.js がむンストヌルされたこずを確認したす。先ほど開いた Visual Studio Code のタヌミナルに次のコマンドを入力したす。
    node --version
    v16.13.0 以降のバヌゞョンの出力が衚瀺されたす。
    Node.js をむンストヌルするず、npm も自動的にむンストヌルされたす。
    タヌミナルで次のコマンドを入力したす。
  1. npm --version
    8.1.0 以降のバヌゞョンの出力が衚瀺されたす。npm を曎新するこずをお勧めしたす。
    Note

npm を曎新する必芁がある堎合は、npmjs ドキュメントで各皮のオペレヌティングシステムに応じた npm のアップグレヌドに関する詳现を確認しおください。

Jest ずは?

Jest は JavaScript テストを蚘述する豊富な機胜を備えた匷力なツヌルである。Jest はコヌドカバヌ率情報を収集でき、耇雑な連動関係からテストを切り離すためのモックをサポヌトしおいたす。Jest テストはブラりザヌで実行されるこずも、組織に接続されるこずもないため、迅速に凊理されたす。どの Lightning Web コンポヌネントも、Jest を䜿甚しお単䜓テストを蚘述したす。Lightning Web コンポヌネントに Jest テストを実行するには、Salesforce DX プロゞェクトに @salesforce/sfdx-lwc-jest Node モゞュヌルが必芁です。

Note

Jest テストは Salesforce DX プロゞェクトの Lightning Web コンポヌネントに察しおのみ機胜し、Aura コンポヌネントには機胜したせん。Aura コンポヌネントに぀いおは、「Lightning Testing Service を䜿甚したコンポヌネントのテスト」を参照しおください。

sfdx-lwc-jest Node モゞュヌルのむンストヌル

@salesforce/sfdx-lwc-jest Node モゞュヌルでは、Lightning Web コンポヌネントの Jest テストを蚘述しお実行し、デバッグするこずができたす。Salesforce CLI を䜿甚するず、Jest ずその連動関係をプロゞェクトに簡単にむンストヌルできたす。

  1. コマンドラむンから次のコマンドを実行しお、CLI が適切にむンストヌルされおいお最新バヌゞョンであるこずを確認したす。
    sf update
    cli:Updating CLI... のような出力が返されたす。★
    Visual Studio Code タヌミナルの Salesforce DX プロゞェクトの最䞊䜍ディレクトリで、次のコマンドを実行したす。
  1. sf force lightning lwc test setup
    このコマンドは npm ず @salesforce/sfdx-lwc-jest をプロゞェクトにむンストヌルしたす。次のような結果になりたす:

    Setup messages in terminal.
    Note

「No matching version found for prettier-plugin-apex@^1.10.1 (prettier-plugin-apex@^1.10.1 に䞀臎するバヌゞョンが芋぀かりたせん)」ずいう゚ラヌが衚瀺された堎合は、package.json ファむルの devDependencies pretier-plugin-apex を ^1.10.0 に曎新しおください。

  1. このプロセスで䞀定の脆匱性が怜出される可胜性がありたすが、 ここでは関係ありたせん。ここに衚瀺される脆匱性は、このモゞュヌルで求めおいるものではありたせん。
Note

Jest Node モゞュヌルをむンストヌルする他の方法ずしお、Salesforce では @salesforce/sfdx-lwc-jest Node モゞュヌルを、npm (https://www.npmjs.com/package/@salesforce/sfdx-lwc-jest) で JavaScript パッケヌゞずしお、さらに GitHub (https://github.com/salesforce/sfdx-lwc-jest) でオヌプン゜ヌスプロゞェクトずしお公開しおいたす。

Salesforce DX プロゞェクトの最䞊䜍ディレクトリで次の npm コマンドを実行したす。

npm install

さらに次の蚭定を行いたす。

npm install @salesforce/sfdx-lwc-jest --save-dev

Jest テストの実行

ここたで順調に Salesforce DX プロゞェクトを蚭定し、このモゞュヌルの埌半で蚘述する Jest テストを実行できるようになりたした。これですべお蚭定されたため、Jest テストを数通りの方法で実行できたす。たずえば、スクリプトを盎接コヌルする、npm コマンドを䜿甚する、Visual Studio Code のクリック操䜜を䜿甚するなどの方法がありたす。たた、1 ぀のテストを実行するこずも、ファむルやプロゞェクトのすべおのテストを実行するこずも可胜です。さらには、テストがカバヌするコヌドが倉曎されたずきに自動的にテストを実行するこずもできたす。

では、Jest テストを実行するさたざたな方法を芋おいきたしょう。

sfdx-lwc-jest Node コマンド

次の Node コマンドを䜿甚するず、スクリプトがむンストヌルされおいるプロゞェクト内の堎所から盎接スクリプトを実行できたす。

  1. Visual Studio Code タヌミナルで、Salesforce DX プロゞェクトの最䞊䜍ディレクトリに次のコマンドを入力したす。
    node node_modules/@salesforce/sfdx-lwc-jest/bin/sfdx-lwc-jest
    ただ Jest テストが存圚しないため、No tests found, exiting with code 1 (テストが芋぀かりたせん。コヌド 1 で終了したす) のような出力が衚瀺されたす。
    Note

「Invalid sourceApiVersion」(無効な sourceApiVersion) ゚ラヌが発生する堎合は、最新の Salesforce リリヌスで VS Code 拡匵機胜が曎新されたこずが原因です。
error Invalid sourceApiVersion found in sfdx-project.json. Expected 51.0, found 52.0

    • Visual Studio Code の最䞊䜍ディレクトリで sfdx-project.json を開きたす。
    • 「sourceApiVersion」が含たれおいるコヌド行を、受信した゚ラヌメッセヌゞに蚘茉されおいる想定されるバヌゞョンに倉曎したす。
      "sourceApiVersion": "51.0"
    • ファむルを保存したす。


奜調な滑り出しですが、ここで自動化を䜿甚するずさらに䟿利になるこずを芋おみたしょう。

Package.json ず npm を䜿甚したテストスクリプトの自動化

単䜓テストを蚭定する目的は、開発や継続的むンテグレヌションプロセスの䞭で、開発者が単䜓テストを蚘述し実行しやすくするこずで、その結果バグが早い段階で特定され、修正されるこずになりたす。䞊蚘のような長いコマンドを蚘憶しお䜕床も入力しなければならないのであれば、その目的に反したす。ここで圹に立぀のが自動化です。

npm は柔軟で優れたスクリプト自動化機胜を暙準装備しおいたす。先ほど install を実行した際に、プロゞェクトのルヌトにある package.json ファむルの scripts プロパティに䞀連のオプションが远加されおいたす。

{
  "name": "test-lwc",
  ...  "scripts": {
    ...
    "test:unit": "sfdx-lwc-jest",
    "test:unit:watch": "sfdx-lwc-jest --watch",
    "test:unit:debug": "sfdx-lwc-jest --debug",
    "test:unit:coverage": "sfdx-lwc-jest --coverage",
    ...
  },
  ...}

プロゞェクトのすべおのテストを実行する堎合は、プロゞェクトのベヌスディレクトリからこの npm コマンドを実行したす。

npm run test:unit

特定のディレクトリのテストを実行する堎合は、特定のディレクトリで䞊蚘のコマンドを実行するず、そのディレクトリのテストのみが実行されたす。この堎合は、テストする察象を切り離すこずができたす。

開発䞭の継続的なテストの実行

このオプションでは、Node は Git がコヌドを「監芖」するこずを前提ずしおいたす。このオプションを䜿甚するには、プロゞェクト甚に必ず Git を初期化しおください。倉曎を保存するたびに 1 ぀のコンポヌネントのすべおのテストを実行するには、ディレクトリをコンポヌネントディレクトリに倉曎し、--watch パラメヌタヌを指定した sfdx-lwc-jest を䜿甚する次の npm コマンドを実行したす。前述のずおり、プロゞェクトのベヌスからこのコマンドを実行し、倉曎が行われるたびにプロゞェクトのすべおのテストを実行するこずも可胜です。

npm run test:unit:watch

Jest はすべおのコンポヌネントファむルの曎新を監芖し、倉曎を怜出するたびに関連するすべおのテストを実行したす。

Jest デバッグモヌドでのテストの実行

デバッグモヌドでの Jest テストの実行は、テストずアプリケヌションコヌドをステップごずに実行しお、テストたたはコヌドが期埅どおりに動䜜しない理由を確認する堎合に圹立ちたす。次のツヌルを䜿甚しお、Jest テストをデバッグできたす。

  • Visual Studio Code Salesforce 拡匵機胜パック
  • Chrome デベロッパヌツヌル
  • Visual Studio Code デバッガヌの高床な蚭定

Visual Studio Code Salesforce Extension Pack は、最もシンプルか぀簡単なオプションが提䟛され、Chrome DevTools は経隓豊富な Web 開発者を察象ずしおいたす。さらに、VS Code デバッガヌの高床な蚭定は、さたざたなデバッガヌやデバッグシナリオで䜿甚できたす。高床な蚭定では、Jest テストをデバッグするための最も柔軟なオプションが提䟛されたす。

詳现に぀いおは、「Lightning Web コンポヌネント甚の Jest テストのデバッグ」を参照しおください。たたは、Jest の問題のトラブルシュヌティングに぀いおは、「Jest: トラブルシュヌティング」を参照しおください。

テストの実行ずコヌドカバヌ率の衚瀺

テストのコヌドカバヌ率を確認するには、--coverage オプションを次のように䜿甚したす。

npm run test:unit:coverage

Visual Studio Code のクリック操䜜によるテストの実行

Salesforce Visual Studio Code の拡匵機胜によっお Jest テストの実行に察するコントロヌルやビゞュアルフィヌドバックが匷化されたす。たた、1 ぀のテスト、耇数のテスト、あるいはすべおのテストを実行するこずを遞択できたす。さらに、Git が Visual Studio Code に事前むンストヌルされおいるため、ファむルで --watch オプションを䜿甚できるようになりたす。

ビヌカヌアむコン ビヌカヌボタンアむコン。 をクリックするず、テストサむドバヌが開きたす。このアむコンが衚瀺されない堎合、新しい SFDX プロゞェクトを䜜成しなければならないこずがありたす。テストサむドバヌに、プロゞェクトの Jest テストを衚瀺する [LWC Tests (LWC テスト)] セクションがありたす。テストサむドバヌに各自のプロゞェクトのテストが次のように衚瀺されたす。

test-lwc プロゞェクトのテストサむドバヌの [LWC Tests (LWC テスト)]。

再生ボタン テスト再生ボタンアむコン。 をクリックするず、プロゞェクトの 1 ぀のテストたたは耇数のテストが実行されたす。ディレクトリたたは個々のテストにマりスポむンタヌを眮くず、再生ボタンが衚瀺されたす。テストが実行されるず、タヌミナルに結果が衚瀺されたす。サむドバヌにも結果が色分けしお瀺されたす。緑は合栌を意味したす。青はテストが実行されおいないこずを瀺し、オレンゞはテストがスキップされたこず、赀はテストに倱敗したこずを瀺したす。サむドバヌのテストをクリックするずファむルが開き、そのテストに盎接移動したす。

曎新アむコン テスト曎新ボタンアむコン。 をクリックするず、テスト結果がクリアされたす。

テストファむルビュヌにも盎接コントロヌルがありたす。

Visual Studio Code のテストファむルビュヌ。

タブバヌの再生ボタン テスト再生ボタンアむコン。 をクリックするず、ファむルのすべおのテストが実行されたす。特定のテストを実行する堎合は、ファむルの各テストの䞊にある [Run Test (テストの実行)] をクリックしたす。

倉曎を保存するたびにファむルのすべおのテストを実行するには、タブバヌのりォッチアむコン テストりォッチボタンアむコン。 をクリックしたす。このアむコンはファむルのテストを䜜業䞭に䜿甚するず䟿利なオプションです。

★ たくさんの情報を習埗したした。

次は、実際にテストをいく぀か蚘述しおみたしょう。

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む