Vue.js 如何测试vue vuetify v-autocomplete
不知何故,在测试期间,我无法在html中看到Vue.js 如何测试vue vuetify v-autocomplete,vue.js,jestjs,vuetify.js,vue-test-utils,v-autocomplete,Vue.js,Jestjs,Vuetify.js,Vue Test Utils,V Autocomplete,不知何故,在测试期间,我无法在html中看到v-autocomplete的项,而且设置项也不起作用。下面是v-autocomplete(将项目加载到支架上)和测试 //v-autocomplete.vue 导出默认值{ 数据(){ 返回{ 项目:[], }; }, 安装的(){ service.getItems()然后((响应)=>{ 此项=响应; }); }, }; 测试如下所示: //v-autocomplete.spec.js 从“Vue”导入Vue; 从“Vuetify”导入Vueti
v-autocomplete
的项,而且设置项也不起作用。下面是v-autocomplete
(将项目加载到支架上)和测试
//v-autocomplete.vue
导出默认值{
数据(){
返回{
项目:[],
};
},
安装的(){
service.getItems()然后((响应)=>{
此项=响应;
});
},
};
测试如下所示:
//v-autocomplete.spec.js
从“Vue”导入Vue;
从“Vuetify”导入Vuetify;
从“@/components/v-autocomplete.vue”导入VAutocomplete;
导入“@测试库/jest dom”;
从'@vue/test-utils'导入{createLocalVue,mount};
从“@/service/service”导入服务;
Vue.use(Vuetify);
常数项=[
{name:'Item 1',id:1},
{name:'Item 2',id:2},
];
const getItemsSpy=jest
.spyOn(服务“getItems”)
.mockImplementation(()=>{
返回新承诺((解决)=>{
解决(项目);
});
});
描述('v-autocomplete.vue',()=>{
让localVue;
让虚张声势;
让包装纸;
在每个之前(()=>{
开玩笑。clearAllMocks();
localVue=createLocalVue();
vuetify=新的vuetify();
});
它('should load the items',async()=>{
包装=安装(自动完成{
localVue,
vuetify,
普罗斯达:{},
});
expect(getItemsSpy).toBeCalledTimes(1);
用于(项目的常数项){
expect(getByText(wrapper.element,item.name)).toBeTruthy();//将失败->无法找到包含文本的元素
}
});
});
测试expect(getByText(wrapper.element,item.name)).toBeTruthy()代码>将失败,并显示消息找不到文本为
的元素。同时,使用console.log(wrapper.html())
打印html不会显示v-autocomplete
的项目。所以我的问题是:
如果项目已加载,我如何进行测试
如何将其中一个已加载项设置为v-autocomplete
的选定项
单击.v-input\u slot
,可以打开自动完成菜单。我不认为,测试库功能是最佳实践
单元测试:
it(“应该加载项目”,async()=>{
包装=安装(自动完成{
localVue,
vuetify,
propsData:{}
});
const autocomplete=wrapper.element;
const autocompleteControls=autocomplete.find(“.v-input\uu slot”);
自动完成控件。触发器(“单击”);
等待wrapper.vm.$nextTick();
expect(getItemsSpy).toBeCalledTimes(1);
用于(项目的常数项){
expect(getByText(wrapper.element,item.name)).toBeTruthy();
}
});
资料来源:
v-autocomplete是表单的一部分,项目是从外部源加载的。要提交表单,我必须选择其中一个值。因此,我需要知道是否加载了某些内容。不幸的是,提供的解决方案不适用于我。我可以使用.findAll('.v-input\uu slot')
找到元素并触发单击。但是html没有更新。你能添加你的package.json吗?我将对您的依赖项进行更多测试。因为,在console.log(wrapper.html())中,我可以看到菜单项。问题也可能出现在模拟项目中。在安装后尝试console.log(this.items)。