获取vue-cli-service测试:从另一个文件(不是.env.test)加载环境变量的单元

问题描述 投票:0回答:1

使用Vue CLI和Jest。在我的packages.config中,我有:

"test:unit": "vue-cli-service test:unit",

经过反复试验,我发现这会导致加载.env.test环境变量文件,并将NODE_ENV变量设置为生产。这是我正在测试的基本测试:

import { mount } from '@vue/test-utils'
import Home from './Home'

describe('Home', () => {
  test('is a Vue instance', () => {
    console.log('=================================================');
    console.log('ENVVAR=' + process.env.ENVVAR);
    console.log('NODE_ENV=' + process.env.NODE_ENV);
    console.log('=================================================');
    const wrapper = mount(Home);
    expect(wrapper.isVueInstance()).toBeTruthy();
  });
});

不幸的是,vue-cli-service在使用test:unit时没有--mode选项。我需要获取vue-cli-service来加载特定环境的变量,还需要将NODE_ENV设置为特定的值,例如:

"test:unit": "vue-cli-service test:unit --mode foo",

[如果存在,则需要它来加载.env.foo环境变量。理想情况下,它也会将NODE_ENV也更改为foo,但这无关紧要。

如果我将packages.config更改为:

"test:unit": "set NODE_ENV=foo&&vue-cli-service test:unit",

它确实将NODE_ENV设置为foo,但是vue-cli-service坚持加载.env.test而不是.env.foo。此外,我收到了很多这样的错误:

  console.error node_modules/vue/dist/vue.runtime.common.dev.js:621
    [Vue warn]: Unknown custom element: <v-app> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

    found in

    ---> <App>
           <Root>

那么有什么方法可以获取vue-cli-service来加载特定的环境变量,而不是.env.test?

谢谢

vue.js vue-cli vue-cli-3
1个回答
0
投票

为了解决这个问题,我最终甚至没有使用vue-cli-service。

在我的packages.json中的脚本下:

"test:unit": "./node_modules/.bin/jest",

然后我创建了这个setup.js文件:

process.env.NODE_ENV='foo';
var dotenv = require("dotenv");
// Load in reverse order (variables in second file will not override variables in first)
dotenv.config({ path: '.env.foo' });
dotenv.config({ path: '.env' });

并在我的jest.config.js中引用了它:

setupFiles: ["./src/.jest/setup.js"],

现在将加载适当的环境变量,并且将NODE_ENV设置为'foo'(在本示例中)。

© www.soinside.com 2019 - 2024. All rights reserved.