vue.js est unit -Как протестировать наблюдателя на основе вычисленного значения?(setComputed устарело) - PullRequest
0 голосов
/ 21 октября 2018

У меня есть наблюдатель за языком в моем компоненте. Я получаю текущий язык от получателя (его значение изменяется с помощью переключателя языка панели инструментов, по умолчанию в state.language "en")

ContactForm.vue

  ...
  data() {
    return {
      contactLang: "",
      ...
    };
  },
  computed: {
        ...mapGetters(["language"]),
      },
      watch: {
        language(newLanguage) {
          console.lo("language changed to: ", newLanguage);
          this.contactLang = newLanguage;
          this.$validator.localize(newLanguage);
        }
      },

============================

Я пытаюсь проверить часыblock

ContactForm.spec.js

beforeEach(() => {
    // create a fresh store instance for every test case.
    storeMocks = createStoreMocks();
    options = {
      sync: false,
      provide: () => ({
        $validator: v
      }),
      store: storeMocks.store,
      i18n
    };
    wrapper = shallowMount(ContactForm, options);
  });


  it("change the form language when locale changed", () => {
    // update the Vuex store language , but it does not trigger the watcher ...
    wrapper.vm.$store.state.language = "fr";
    expect(wrapper.vm.contactLang).toBe("fr");
  });

Есть ли способ проверить этот блок часов или мне следует реструктурировать свой код, чтобы избежать такого тестирования в этом компоненте...

1 Ответ

0 голосов
/ 24 октября 2018

Я решил проблему ... наблюдатели асинхронны, поэтому я просто задерживаю утверждение

  it("change the form language when locale changed", () => {
    // pdate the Vuex store language , but it does not trigger the watcher ...
    wrapper.vm.$store.state.language = "fr";
    setTimeout(() => {
      // assert changes operated by watcher
      expect(wrapper.vm.contactLang).toBe("fr");
  }, 50);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...