🐷

vitestでexpectやtestをimportをせずに書く

2022/12/15に公開

問題

vitestを使っている。
expectやtestのimportを一々書くのが面倒。

import { expect, test } from "vitest"; // これが面倒
import { ValueObject as Foo } from "../value-object";

test("bar", () => {
  const foo = new Foo(1)
  expect(foo.v).toBe(1);
});

どうするか?

対応

globals設定を追加する。
https://vitest.dev/config/#globals にある通り追加する。
設定追加内容を以下に抜粋。

// vite.config.ts
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    globals: true,
  },
})
// tsconfig.json
{
  "compilerOptions": {
    "types": ["vitest/globals"]
  }
}

すると、下記で動くようになる。

import { ValueObject as Foo } from "../value-object";

test("bar", () => {
  const foo = new Foo(1)
  expect(foo.v).toBe(1);
});

余談

https://vitest.dev/config/#globals

By default, vitest does not provide global APIs for explicitness.
デフォルトでは、vitestは明示性のためのグローバルなAPIを提供しません。

わかる。でも面倒になるんだよな。

Discussion