🔀
Vitestで外部パッケージの内部モジュールをmockする
何らかのライブラリの内部に介入したいことがある。
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"],
},
},
},
});
おしまい。
Discussion