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