vue.js单元测试 - 挂钩时出错

时间:2017-03-13 15:29:41

标签: unit-testing jasmine vue.js

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

实际上......单元测试正在通过,但在控制台(终端或浏览器下)我收到以下错误:错误日志:' [Vue警告]:挂钩错误:(在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');
    });
});

谢谢!

1 个答案:

答案 0 :(得分:1)

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

  1. 您可以将变量声明为错误抛出标记(即errorThrown)。

    let errorThrown = false;
    
  2. 定义errorHandler函数,以便errorThrown在被触发时切换为true

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

    expect(errorThrown).toBe(false);  // Test will fail here
    
  4. 检查工作演示here 这样,安装方法中发生的错误将被捕获并强制单元测试失败。