Как выполнить модульное тестирование компонентов Vue.js, использующих nuxt-i18n - PullRequest
0 голосов
/ 01 февраля 2019

Если я попытаюсь запустить приведенную ниже вещь (с yarn run jest), я получу TypeError: _vm. $ T не является функцией , потому что SearchField использует перевод ("$t('search')").

import { mount } from "@vue/test-utils";
import SearchField from "@/components/ui/SearchField";

describe("SearchField", () => {
  const wrapper = mount(SearchField);

  it("renders correctly", () => {
    expect(wrapper.element).toMatchSnapshot();
  });
});

Если я добавлю следующие три строки в начале, я получу TypeError: Вместо этого невозможно прочитать свойство '_t' из неопределенного .

import Vue from "vue";
import VueI18n from "vue-i18n";
Vue.use(VueI18n);

1 Ответ

0 голосов
/ 06 февраля 2019

nuxt-i18n - это внешняя библиотека, а не ваш собственный код, поэтому в соответствии с рекомендациями по тестированию мы просто смоделируем библиотеку перевода и ее необходимые функции (в данном случае $t).

Следующеекод должен решить вашу проблему:

describe("SearchField", () => {
  const wrapper = mount(SearchField);

  it("renders correctly", () => {
    mocks: {
      $t: (msg) => msg
    }
    expect(wrapper.element).toMatchSnapshot();
  });
});

Более подробную информацию об этом подходе можно найти здесь .

...