編集

Vitest v3

Vitest v3 がリリースされた。

https://vitest.dev/blog/vitest-3

機能面でいくつか破壊的な変更が含まれている。次に、抜粋して紹介する。

#spy.mockReset の挙動変更

spy.mockReset()は今までモックの履歴をクリアした上で、モックを空の関数に差し替えていたが、Vitest v3 ではモックを元の実装に戻すように実装が変更された。

これにより、Jest と Vitest でspy.mockReset()の挙動が異なるようになった。

#テストフックへのコンテキストの共有

テストフック(onTestFailedonTestFinished)がコンテキストを受け取るようになった。

js
test("some test", (ctx) => {
  ctx.info = "some info";
  if (something()) {
    ctx.info = "some other info";
  }
  onTestFinished((ctx) => {
    if (ctx.info === "some info") {
      // do a thing
    }
  });
});

#テストファイルのカバレッジからの除外

今まで設定をカスタムしているとテストファイル自体をカバレッジの対象にしてしまうことがあったが、常に除外されるようになった。

#spyOn が実装を再利用するように変更

spyOnが実装を再利用するように変更された。

js
const spy1 = vi.spyOn(obj, "method").mockImplementation(() => "mocked");
const spy2 = vi.spyOn(obj, "method");

expect(spy1).toBe(spy2);
編集