Vue-test-utils использует mixin для vee-validate в nuxt - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь проверить, работает ли проверка для формы с помощью vee-validate и vue-test-utils.Я также использую nuxt и создал собственный плагин, который устанавливает vee-validate и предоставляет два пользовательских вычисляемых свойства в качестве миксина.

Проблема в том, что мне нужен способ использовать эти миксины в экземпляре localVue, однакоЯ не могу просто импортировать весь файл, так как это приводит к тому, что vee-validate устанавливается дважды на основной экземпляр vue.Я также не могу просто сказать localVue.use (MyCustomVeeValidatePlugin), потому что у плагина нет метода установки («плагины» в nuxt несколько отличаются от vue).

Что работает, так это создание файла, который экспортирует isFormValidи isFormChanged, а затем плагин импортирует эти методы.Затем мне также нужно импортировать эти методы в тестовый файл и создать миксин для экземпляра localVue.Я бы предпочел определить миксин в одном файле плагина.Я знаю, что это очень специфично, но у кого-нибудь была подобная проблема?Я мог бы представить, что переписать плагин так, как он определен в документации 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);
    }
  }
});

1 Ответ

0 голосов
/ 24 января 2019

Насколько я знаю, на основании рекомендаций, которые я прочитал в "Тестировании приложений VueJs (https://www.manning.com/books/testing-vue-js-applications),), автор, который также является основным автором vue-test-utils, рекомендует:

Я уже говорил о том, почему вы должны использовать конструктор localVue и избегать установки на базовый конструктор. Это особенно важно для Vue Router. Всегда используйте localVue для установки Vue Router в тестах. Вы должны убедиться, что нетФайл в вашем тестовом наборе импортирует файл, который вызывает Vue.use с Vue Router. Легко случайно импортировать файл, который включает Vue.use. Даже если вы не запускаете модуль, если модуль импортирован, то код внутрионо будет оценено.

Исходя из этой рекомендации, я переместил вызовы Vue.use () из файлов, таких как store.js и router.js, в main.js, который не используется во времятестирование.

...