はじめに
React+TypeScriptの環境をViteで作成し、Jestをインストール後、
npm run test
でテストする際にReferenceError: TextEncoder is not defined
というエラーが発生しました。
当エラーの解決法についてご紹介します。
参考記事
解決方法
// jest.setup.tsに下記を追加
global.TextEncoder = require("util").TextEncoder;
// TextEncoderがすべてのテストでグローバルに使用できるようになる
原因
jest環境は、テスト用にブラウザのような環境をシミュレートするように設計されています。ただし、TextEncoderやTextDecoderなど、ブラウザ固有のオブジェクトがすべてデフォルトで含まれているわけではありません。そのため、これらのオブジェクトに依存するテストを実行するとエラーが発生する可能性があるようです。
TextEncoderは、文字列(UTF-8)をエンコードしてUint8Arrayとして扱うためのWeb APIです。
まとめ
Jest環境でテストしていて初めて遭遇したエラーでした。
これからどんどんテストを書いていってテスト実行時のエラーにも慣れていきたいです。