Vue +打字稿-TypeError:对象原型只能是Object或为null:未定义

You*_*Kim 4 typescript vue.js jestjs

TypeError:对象原型只能是Object或为null:未定义

我的项目出现错误。我正在使用vuejs,打字稿和玩笑。

这只是简单的代码,我试图用开玩笑的方式进行单元测试,但是它有一些错误。这是我的测试代码。

///<reference path="../../../../node_modules/@types/jest/index.d.ts"/>
// https://vue-test-utils.vuejs.org/kr/s
import { mount } from "vue-test-utils";
import HelloWorld from './HelloWorld.vue';

describe('[HelloWorld]', function () {
  let cmp: any;

  beforeEach(() => {
    cmp = mount(HelloWorld);
  });

  it("Check vue instance", () => {
    expect(cmp.isVueInstance()).toBeTruthy();
  });

  it("message is Hello", () => {
    expect(cmp.vm.msg).toEqual('Hello!!');
  });
});
Run Code Online (Sandbox Code Playgroud)

这是vue文件

   <template>
   <div class="hello">
       <h1>{{ msg }}</h1>
       <img src="/assets/logo.png">
       <button @click="clickHandler">
         button
       </button>
     </div>
   </template>

   <script lang="ts">
   import Vue from "vue";
   import Component from "vue-class-component";

   interface HelloWorldInterface {
     msg: string;
     clickHandler(): void;
   }

   @Component({})
   export default class HelloWorld extends Vue implements HelloWorldInterface {
     msg = "Hello!!";
     clickHandler() {
       window.alert(this.msg);
     }
   }
   </script>
Run Code Online (Sandbox Code Playgroud)

这是带有图片的错误日志。

Hoa*_* Vu 5

您应该esModuleInterop = true为自己tsconfig.json或自己tsconfig设置jest


аle*_*kyі 0

不是

 it("message is Hello", () => {
    expect(cmp.vm.msg).toEqual('Hello!!');
  });
Run Code Online (Sandbox Code Playgroud)

应该

it("message is Hello", () => {
    expect(cmp.msg).toEqual('Hello!!');
  });
Run Code Online (Sandbox Code Playgroud)