🔀

Vitestで外部パッケージの内部モジュールをmockする

2024/08/20に公開

何らかのライブラリの内部に介入したいことがある。
vi.spyOnなどが使えなくて、処理がモジュールに分かれている場合モジュールをモックしようとするだろう。
しかし、viteの外部パッケージを事前バンドルする性質により、以下のようにモックをしようとしても何も起きない。

hoge.test.ts
vi.mock("hogehoge-lib/dist/internal/hoge.js", () => ({
  hoge: vi.fn(),
}));

パッケージをインライン化することでモックできるようになる。

vitest.config.ts
import { defineConfig } from "vitest/config";

export default defineConfig({
  test: {
    server: {
      deps: {
        inline: ["hogehoge-lib"],
      },
    },
  },
});

おしまい。

GitHubで編集を提案

Discussion