【发布时间】:2019-06-16 06:08:48
【问题描述】:
我正在尝试测试验证是否适用于具有 vee-validate 和 vue-test-utils 的表单。我还使用 nuxt 并创建了一个自定义插件,该插件安装 vee-validate 并提供两个自定义计算属性作为 mixin。
问题是我需要一种在 localVue 实例中使用这些 mixin 的方法,但是,我不能只导入整个文件,因为它会导致在主 vue 实例上安装两次 vee-validate。我也不能只说 localVue.use(MyCustomVeeValidatePlugin) 因为插件没有安装方法(nuxt 中的“插件”与 vue 中的有些不同)。
有效的是创建一个导出 isFormValid 和 isFormChanged 的文件,然后让插件导入这些方法。然后我还需要在测试文件中导入这些方法,并为 localVue 实例创建一个 mixin。我更喜欢在单个插件文件中定义 mixin。我知道这是非常具体的,但有人遇到过类似的问题吗?我可以想象将插件重写为更像是在 Vue.js 文档中定义的(使用安装方法)并以某种方式安装它。
插件:
import Vue from "vue";
import VeeValidate from "vee-validate";
Vue.use(VeeValidate);
//create global mixin for checking if form is valid
//note: every input element needs a name
Vue.mixin({
computed: {
isFormValid() {
return Object.keys(this.fields).every(key =>
this.fields[key].valid);
},
isFormChanged() {
return Object.keys(this.fields).some(key =>
this.fields[key].changed);
}
}
});
【问题讨论】:
-
两次调用 Vue.use(VeeValidate) 是否真的会导致测试出现问题?
-
它只是说[Vue警告]:计算属性“错误”已经在数据中定义。和 [Vue 警告]:计算属性“字段”已在数据中定义。这不会在测试中导致任何错误或任何事情,但不确定 vue 实例如何受此影响。问题是即使我决定忽略它安装在全局 Vue 实例而不是 localVue 上的警告,这是一个更大的问题@chrismarx
标签: vue.js nuxt.js vue-test-utils vee-validate