SalesforceTrailhead,トラブルシューティング

(2022-06-27 19:23)現在のTrailheadワイヤサービスの Jest テストの記述 単元 | Salesforce TrailheadのApexワイヤーアダプターのサンプルコードには誤りがある。

//wireApex.test.js
import getAccountList from '@salesforce/apex/AccountController.getAccountList';

//テスト内で、下記のemit()を実行
getAccountList.emit(mockGetAccountList);//→「getAccountList.emit()は未定義(「TypeError: getAccountList.emit is not a function」)」と怒られる。

jest.mock()を使って、明示的にモックを作成するApexメソッドを指定しないといけない。

import getAccountList from '@salesforce/apex/AccountController.getAccountList';

jest.mock(
  '@salesforce/apex/AccountController.getAccountList',
  ()=>{
    const { createApexTestWireAdapter } = require("@salesforce/sfdx-lwc-jest");
    return {
      default: createApexTestWireAdapter(jest.fn()),
    };
  },
  {virtual: true}
);

//テスト内で、下記のemit()を実行
getAccountList.emit(mockGetAccountList);//→成功

また、ググると「registerApexTestWireAdapter」も出てくるが、これはすでに非推奨になっている。Trailheadは2世代ぐらい古いっぽい。

【参考】

lwc jest – registerApexTestWireAdapter is deprecated when working through trailhead Lightning Web Components Tests – Salesforce Stack Exchange
feat: createWireAdapterMock instead of register by jodarove · Pull Request #36 · salesforce/wire-service-jest-util · GitHub
lwc-recipes/apexWireMethodToProperty.test.js at main · trailheadapps/lwc-recipes · GitHub