Unit testing vue.js单元测试-已安装挂钩中出错

Unit testing vue.js单元测试-已安装挂钩中出错,unit-testing,jasmine,vue.js,Unit Testing,Jasmine,Vue.js,我使用Jasmine作为单元测试框架,我想知道如何知道vue是否正确安装。是否有一个函数、一个来自VueJS的API、一个收据来了解视图的状态 实际上..单元测试通过了,但是在控制台(终端或浏览器下)我得到了以下错误:错误日志:'[Vue warn]:挂载钩子中的错误:(在xxxx中找到)-ReferenceError:$未定义' 那么我希望我的单元测试在这种错误上失败,而不是通过 下面是代码的快速快照: describe("location component tests suite", ()

我使用Jasmine作为单元测试框架,我想知道如何知道vue是否正确安装。是否有一个函数、一个来自VueJS的API、一个收据来了解视图的状态

实际上..单元测试通过了,但是在控制台(终端或浏览器下)我得到了以下错误:错误日志:'[Vue warn]:挂载钩子中的错误:(在xxxx中找到)-ReferenceError:$未定义'

那么我希望我的单元测试在这种错误上失败,而不是通过

下面是代码的快速快照:

describe("location component tests suite", () => {

    const getComponent = (data) => {
        let vm = new Vue({
            template : "<div>"
                + "<location"
                + " :data='data'"
                + " label='pick'"
                + " placeholder='placeholder'"
                + " required>"
                + "</location></div>",

            data: {
                data
            }
        });

        return vm;
    };

    it("Validate mount", () => {
        const data= { 'data' : { 'value' : 'VUE'} };
        const vm = getComponent(data).$mount();
        expect(vm.$el.querySelector('div.location-wrapper').getAttribute('class')).toBe('location-wrapper');
        expect(vm.$el.querySelector('input').getAttribute('name')).toBe('pick');
    });
});
description(“位置组件测试套件”,()=>{
常量getComponent=(数据)=>{
让vm=新Vue({
模板:“”
+ ""
+ "",
数据:{
数据
}
});
返回虚拟机;
};
它(“验证装载”,()=>{
常量数据={'data':{'value':'VUE'};
const vm=getComponent(数据)。$mount();
expect(vm.$el.querySelector('div.location-wrapper').getAttribute('class')).toBe('location-wrapper');
expect(vm.$el.querySelector('input').getAttribute('name')).toBe('pick');
});
});
谢谢大家!

您可能希望使用自
v2.2.0
以来引入的API

let errorThrown = false;
  • 您可以将变量声明为错误抛出标志(即
    errorhorn

  • 定义errorHandler函数,以便在触发时将
    errorThrown
    切换为
    true

    Vue.config.errorHandler = function (err, vm, info) {
      console.log(info);
      if(info.includes('mounted')) {
        errorThrown = true;
      }
    };
    
  • 使用jasmine中的
    expect
    API检查
    errorshown

    expect(errorThrown).toBe(false);  // Test will fail here
    
  • 检查工作演示。

    这样,安装方法中发生的错误将被捕获,并迫使单元测试失败。

    组件的代码在这里可能更相关。我不想知道错误来自何处。。。我只是想知道是否有办法知道在.$mount()期间是否发生错误,因为单元测试没有失败。位置组件是一个复杂的组件,在这里不太相关。。。失败的原因与$(JQuery)有关,因为它不是组件构建的一部分。进口解决了这个问题。。。。我要寻找的是一种方法来捕获此类错误…在.$mount()期间,使我的测试失败,而不是通过。