javascript 设置文件中的vitest全局变量

0yg35tkg  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(269)

如何让在安装文件中定义的变量在测试文件中工作?
安装文件:

var lol = 'lol'

试验:

describe("test", () => {
  it("test lol", () => {
    expect(lol).toBe("lol");
  });
});

这并不像预期的那样工作。但是

window.lol = 'lol'

这是可行的。有没有办法让以前的版本工作或自动设置所有的全局变量为窗口的属性?

gc0ot86w

gc0ot86w1#

如果您查看vitetest测试套件:

    • 一个

您将看到一个示例,其中他们使用test配置中的setupFiles专门为global附加值(特别是使用beforeAll钩子);注意,每个测试套件使用其自己的上下文,这就是为什么以这种方式进行测试(与通过配置的globalSetup字段相反)。
例如,要添加lol

// vite.config.js
export default defineConfig({
  test: {
    // ...
    setupFiles: ['./src/utils/setup-teardown-hooks.js'],
    // ...
  },
});

然后:

// setup-teardown-hook.js
import { afterAll, beforeAll } from 'vitest';
beforeAll(() => {
  global.lol = '🥳';
});
afterAll(() => {
  delete global.lol
});

编辑:看起来您也可以通过Vitest-自定义环境使用populateGlobal实用函数:
Vitest还提供了populateGlobal实用函数,可用于将属性从对象移动到全局名称空间中:

相关问题