Vitestでグローバル変数をモックする方法
· 2 min read
Vitestでグローバル変数をモックして差し替える方法の紹介です。
グローバル変数の変更
vi.stubGlobalを使うことで、テスト実行時のグローバル変数を変更できます。
vi.stubGlobal(変数名, 変更後)
のように書くだけです。
ちなみにVitestの設定でglobalsを有効にしている場合、vi
のimportは必要ありません。
グローバル変数の取り消し
vi.stubGlobalによる変更を取り消すには、vi.unstubAllGlobals
を実行します。
new Functionでも使える
筆者が実際にグローバル変数をモックしたかったのは次のようなnew Function
(関数コンストラクタ)の中でした。
この第1引数内に渡す文字列のDataviewAPI
をテストのときだけモックする必要がありました。
このnew Function
内のグローバル変数も、もちろんvi.stubGlobal
によるモックは有効です。
jsdomなどで使うほか、ブラウザ拡張機能やObsidianのプラグインの開発などでよく使いそうです。