Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 使用摩卡进行Vuejs测试:组件未安装到元件_Testing_Vue.js_Mocha.js_Vuejs2_Jsdom - Fatal编程技术网

Testing 使用摩卡进行Vuejs测试:组件未安装到元件

Testing 使用摩卡进行Vuejs测试:组件未安装到元件,testing,vue.js,mocha.js,vuejs2,jsdom,Testing,Vue.js,Mocha.js,Vuejs2,Jsdom,我对使用VueJS进行开发和使用Mocha(无头使用)进行测试相对较新,我有意不使用vue cli来更好地了解每件事情的工作原理。我有一套功能相当好的单元测试(获取请求、获取/设置道具等),直到需要检查DOM中的某些内容为止。组件似乎已成功创建,但未安装到元素 我正在使用JSDom为无头测试创建DOM上下文,如我的_setup.js所示: global.Vue = require('vue/dist/vue'); require('jsdom-global')('<html><

我对使用VueJS进行开发和使用Mocha(无头使用)进行测试相对较新,我有意不使用vue cli来更好地了解每件事情的工作原理。我有一套功能相当好的单元测试(获取请求、获取/设置道具等),直到需要检查DOM中的某些内容为止。组件似乎已成功创建,但未安装到元素

我正在使用JSDom为无头测试创建DOM上下文,如我的_setup.js所示:

global.Vue = require('vue/dist/vue');
require('jsdom-global')('<html><head></head><body><main id="MyApp"></main></body>');
mycop.spec.js:

import assert from 'assert';
import header from '../src/js/components/myComp.vue';

describe('myComp.vue', function() {
  describe('#created', function() {
    it('should initialize the component', function() {
      const Constructor = Vue.extend(myComp);
      const comp = new Constructor({
        propsData: {
          someProp: 'hello world'
        }
      }).$mount();

      console.log(document.getElementById('MyApp')); // HTMLElement {}
      console.log(comp.$el)                          // undefined

      assert(true);
    });
  });
});
请注意,如果在执行getElementById时将元素的ID更改为不存在的内容,则会出现以下错误-对我来说,这意味着在使用正确的ID时元素上有一个句柄:

//document.getElementById('IDontExist')
[Vue warn]:未能装载组件:未定义模板或呈现函数

请注意,我的组件定义有点不同,因为我采用的是简单的方法,而不是使用vue cli。示例(为了简洁起见,省略了一些代码):

app.vue

import myComp from './components/myComp.vue';

let app = new Vue({
  el: '#MyApp',
  data: {
    someProp: 'hello world'
  },
  created: function() {},
  methods: {}
});

export {app};
麦考霉

export default Vue.component('my-comp', {
  props: ['someProp'],
  data: function() {},
  created: {},
  watch: {},
  methods: {},
  template: `<div>{{someProp}}</div>`
});
导出默认Vue.component('my-comp'{
道具:['someProp'],
数据:函数(){},
创建:{},
手表:{},
方法:{},
模板:`{someProp}}`
});

我有一种感觉,我忽略了一些非常简单的事情,关于如何将组件安装到DOM,或者如何访问组件(但它似乎符合标准)。有什么想法吗?

我也有同样的问题。。不管使用jsDom还是jsDom全局,都没有运气。使用mocha、mocha网页包、typescript、vue加载程序、ts加载程序
export default Vue.component('my-comp', {
  props: ['someProp'],
  data: function() {},
  created: {},
  watch: {},
  methods: {},
  template: `<div>{{someProp}}</div>`
});