Next.jsでVitestを使ってテストをするときのenvファイルを読み込む設定
記事にするほどでもないと思ったんですけど,脳死で調べて出てこなかったので一応書いときます.
今回はservices/foo.ts
でのgetEnv
関数のテストを行います.
以下フォルダ構成です.
.
├──pages
├── vite.config.ts
├── next.config.js
├── next-env.d.ts
├── test
│ └── setup.ts
├── node_modules
├── srvices
│ └── foo.ts
├── package.json
├── yarn.lock
└── tsconfig.json
まずは,vitest
をinstallして下さい.
yarn add -D vitest
その後,package.json
のscriptにvitest
の実行スクリプトを追加してください.
...
"scripts": {
...
"test": "yarn vitest"
},
...
つぎに,vite.config.ts
にvite
の設定を記述していきます.
services
フォルダ内のjs, ts
ファイルをテストします.
test/setup.ts
にてテスト時に.env.test.local
のファイルを環境変数として読み込みますよと書くので,そのファイルを読み込む設定を行います.
import { defineConfig } from 'vitest/config'
export default defineConfig({
define: {
'import.meta.vitest': false,
},
test: {
includeSource: ['services/**/*.{js,ts}'],
setupFiles: ['test/setup.ts'],
},
})
setup.ts
ファイル内ですが,これはNext.jsの記事をそのままコピペしました.
import { loadEnvConfig } from '@next/env'
loadEnvConfig(process.cwd())
今回読み込む環境変数の値と,next.js内での設定です.
TEST_ENV=test_env
module.exports = {
reactStrictMode: true,
pageExtensions: ['jsx', 'js', 'ts', 'tsx'],
build: {
env: {
TEST_ENV: process.env.TEST_ENV,
},
},
env: {
TEST_ENV: process.env.TEST_ENV,
}
}
今回テストする関数と,テストコードです.
環境変数のTEST_ENV
を読み込んで返すだけの関数です.
toBe
は実行した関数の返り値が特定の値と一致するかどうか確認しています.
export const getEnv = () => {
return process.env.TEST_ENV
}
if (import.meta.vitest) {
const { test, expect } = import.meta.vitest
test("getEnv's results is test_env", () => {
expect(getEnv()).toBe('test_env')
})
}
以下のコマンドを実行すると,テストが実行されます.
緑色でPASSの文字が表示されたらテスト合格です.
yarn test
冒頭にも書きましたが,記事にする必要のない程度の話かと思いますが,もし誰か困っている人がいたら参考にしてください程度に書きました.
最後までお読み頂きありがとうございました。もし参考になった、良かったと思われる方はいいねボタンを押していただけると嬉しいです。
Thank you!
参考文献
- https://vitest.dev/config/#setupfiles
- https://nextjs.org/docs/basic-features/environment-variables#test-environment-variables
Author And Source
この問題について(Next.jsでVitestを使ってテストをするときのenvファイルを読み込む設定), 我々は、より多くの情報をここで見つけました https://zenn.dev/tabigaeru/articles/8a473117a4d439著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol