javascript - 方法在单元测试中不可用

标签 javascript typescript unit-testing vue.js jestjs

我使用 TypeScript 在 VueJS 中创建了新项目。

我的组件带有测试方法:

<template>
    <div></div>
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';

@Component
export default class Slider extends Vue {
  private slide: number = 0;
  private sliding: boolean = false;

  public setSlide(slide: number): void {
    this.slide = slide;
  }

  public setSliding(sliding: boolean): void {
    this.sliding = sliding;
  }

  private onSliderStart(slide: any): void {
    this.setSliding(true);
  }

  private onSlideEnd(slide: any): void {
    this.setSliding(false);
  }
}
</script>

测试:
import { shallowMount } from '@vue/test-utils';
import Slider from '@/components/Header.vue';

describe('Slider', () => {
  const wrapper = shallowMount(Slider);

  it('check Slider is a Vue Instance', () => {
    expect(wrapper.isVueInstance()).toBeTruthy();
  });

  it('setSlide is func', () => {
    expect(typeof wrapper.vm.setSlide).toBe('function')
  })
});

现在我想做测试,但是方法 setSlide,setSliding 在包装器中不可用:(

最佳答案

尝试这个:

import YourComponentHere from "@/components/YourComponentHere";
import { shallowMount, Wrapper } from "@vue/test-utils";

describe("test", () => {
  const wrapper: Wrapper<YourComponentHere & { [key: string]: any }>;
  it("does something", () => {
    expect(wrapper.vm.someThingWhatever).toBe(true);
  });
});
这里的好处是你不需要转换 wrapper.vmany每次使用 wrapper.vm

关于javascript - 方法在单元测试中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57021241/

相关文章:

javascript - 在 html 页面中编写所有 javascript 是一个好习惯吗?

javascript - 通过 Google Sheets Apps 脚本访问 Telegram Bot API 文件

c# - 验证在单元测试中失败

javascript - enzyme .eq() 还是.index()?

java - Java 的免费/开源测试生成器?

javascript - 我无法填充 backbone.js View

javascript - 查看 Canvas 元素源代码

javascript - Visual Studio 监听器中的 Typescript

typescript 类型错误: Unable to get property 'split' of undefined or null reference

typescript - PhpStorm (WebStorm) - typescript 文件中反引号内的 HTML 代码常量在 4120 个字符后变为纯文本。失去语法高亮