笑话 ReferenceError:Vue 未定义

김정수*_*김정수 9 vue.js jestjs vuejs2 vue-cli vue-jest

我们正在将 Jest 引入现有项目。

不过,我写了一个示例测试代码。出现上述错误。

   ReferenceError: Vue is not defined

      1 | import User from "../components/modal/ad/AdAdd";
    > 2 | import { mount } from "@vue/test-utils";
        | ^
      3 |
      4 | describe("user component", () => {
      5 |   let wrapper;
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

   ReferenceError: Vue is not defined

      1 | import User from "../components/modal/ad/AdAdd";
    > 2 | import { mount } from "@vue/test-utils";
        | ^
      3 |
      4 | describe("user component", () => {
      5 |   let wrapper;
Run Code Online (Sandbox Code Playgroud)
//User.test.js

import User from "../components/modal/ad/AdAdd";
import { mount } from "@vue/test-utils";

describe("user component", () => {
  let wrapper;
  beforeEach(() => {
    wrapper = mount(User);
  });
  test("render", () => {
    expect(wrapper.vm.oSid).toBe(0);
  });
});
Run Code Online (Sandbox Code Playgroud)
export default {
  data() {
    return {
      Sid: 0,
      deleteList: [],
    };
  },
Run Code Online (Sandbox Code Playgroud)

我刚刚安装了它,但它说视图未定义。我不知道如何解决。

怎么了??

我已经好几天没能解决上述错误了。

我想解决它。任何帮助,将不胜感激。

Ein*_*din 25

我对 vue3 和 jest v.28 遇到了同样的错误,解决方法是添加

    testEnvironmentOptions: {
       customExportConditions: ["node", "node-addons"],
    },
Run Code Online (Sandbox Code Playgroud)

进入jest.config.js这会覆盖从jest 配置页中exports解释package.json的加载的库的版本。由于它默认为for ,并且我失败的测试都是针对 UI 的,因此可能没有为环境导入正确的库。['browser']jest-environment-jsdomjsdom

或者,如果您想要一个不影响其他导入的解决方案,请将其添加到jest.config.js

moduleNameMapper: {
  "^@vue/test-utils": "<rootDir>/node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js"
}
Run Code Online (Sandbox Code Playgroud)

这将告诉 Jest 导入'node'的版本@vue/test-utils而不影响其他导入。

  • 不知道它有什么作用,但现在它可以工作了。 (4认同)

Ulr*_*alt 0

您正在将 Vue 版本 2 与@vue/test-utils 2.0.0一起使用,该版本适用于 Vue 版本 3。

您可以在此处找到 Vue 2 的正确 @vue/test-utils 版本