【问题标题】:Testing Vue.js components with Karma,jasmin and webpack使用 Karma、jasmin 和 webpack 测试 Vue.js 组件
【发布时间】:2017-04-19 21:01:33
【问题描述】:

请看下面我的代码:

import Vue from 'vue';
import UserTile from "../src/components/user-tile.vue";
const DataBus = require('../src/dataBus');

describe('user Tile', () => {
const getComponent = (userData) =>{
  let vm = new Vue({
    template: '<div><user-tile ref="component" :userData="userData"></user-tile></div>',
    components: {
      UserTile,
    },
    data:{
      userData
    }
  })
  return vm;
}

  it('does something', () => {
    const vm = getComponent(DataBus.pod.members[0]).$mount();
    const component= vm.$refs.component;
    console.info(component);
    expect(component.name).toBe('user-tile');
  });
});

我正在尝试做一个非常基本的测试并让它验证组件的名称,在用户磁贴中设置的名称与定义的匹配:

 export default{
name: 'user-tile'
}

但它总是失败: 失败的测试:

   user Tile
    × does something
      Chrome 57.0.2987 (Windows 7 0.0.0)
    Expected undefined to be 'user-tile'.
        at Object.eval (eval at 492 (test/individual-user-tile-test.js:154:1), <anonymous>:33:28)

谁能帮帮我?

【问题讨论】:

    标签: webpack jasmine vue.js karma-runner karma-jasmine


    【解决方案1】:

    这是因为 name 属性不直接存在于组件上 - 它位于 $options 对象上,所以这应该有效:

    it('does something', () => {
        const el = document.createElement('div');
        const vm = getComponent(DataBus.pod.members[0]).$mount(el);
        const component= vm.$refs.component;
        expect(component.$options.name).toEqual('user-tile');
    });
    

    【讨论】:

    • 这给了我正确的想法,但正确的答案实际上是 component.$options._tagName。不过谢谢!
    • component.$options.name 应该可以正常工作 - 在我的机器上测试过。但无论如何,很高兴你能正常工作 ;)
    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多