使用Jest测试nuxt.js应用时访问`process.env`属性

时间:2019-03-01 14:01:31

标签: unit-testing vue.js jestjs nuxt.js babel-jest

我想用 Jest Nuxt.js 应用程序编写单元测试。但是我的某些组件使用了process.env文件中声明的nuxt.config.js属性。运行测试时,我收到此错误:

enter image description here

测试文件示例:

import Config from "../nuxt.config"
import { mount } from "@vue/test-utils"
import CleanMapButton from "../components/UI/buttons/CleanMapButton.vue"

beforeAll(() => {
  process.env = Config.env
})

describe("Clean map button tests", () => {
  it ('Always true test', () => {
    expect(true).toBe(true)
  })
})

2 个答案:

答案 0 :(得分:1)

Imports are hoisted,因此import语句都在process.env中设置beforeAll之前运行。

如果import版的模块需要设置全局变量,则必须在测试开始运行之前将其设置 ,方法是在设置模块中进行设置并将Jest配置为使用类似setupFilesAfterEnv的程序来运行该设置模块。

另一方面,调用require会在需要的时间运行代码 ,因此另一种方法是重构测试代码以在之后调用require('../components/UI/buttons/CleanMapButton.vue') beforeAll设置process.env

答案 1 :(得分:0)

您可以将它们设置为beforeAll

beforeAll(() => {
  process.env = Object.assign(process.env, { get_settings: 'get_settings' });
});