Макет i18n для Vue с шуткой - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь настроить шутный модульный тест для Vue на сложном настраиваемом монореполе, и у меня возникла проблема с i18n, с которой я использую управление переводом в своем приложении.

Учитывая следующий код для создания экземпляра i18n:

import Vue from "vue"
import VueI18n from "vue-i18n"
import { getTranslations, addMissingKey, getLocaleFromBrowser, SUPPORTED_LOCALE } from "./api"
import { dateTimeFormats } from "./formats"

Vue.use(VueI18n)

export const defaultLocale = getLocaleFromBrowser()

const i18n = new VueI18n({
    locale: defaultLocale,
    dateTimeFormats,
    missing: (_locale: string, key: string) => {
        addMissingKey(key, false)
    },
    fallbackLocale: SUPPORTED_LOCALE.EN,
})
export default i18n

const loadTranslations = async (locale: SUPPORTED_LOCALE) => {
    i18n.mergeLocaleMessage(
        locale,
        await getTranslations(locale),
    )
}

export const changeLocale = async (locale: SUPPORTED_LOCALE) => {
    if (i18n.locale === locale) {
        return
    }
    await loadTranslations(locale)
    i18n.locale = locale
    document.getElementsByTagName("html")[0].lang = locale
}

и с этой ошибкой при выполнении теста:

 Test suite failed to run

    TypeError: Cannot read property 'use' of undefined

      14 |     locale: defaultLocale,
      15 |     dateTimeFormats,
    > 16 |     missing: (_locale: string, key: string) => {
         |               ^
      17 |         addMissingKey(key, false)
      18 |     },
      19 |     fallbackLocale: SUPPORTED_LOCALE.EN,

Так что кажется, что vue не определено по неизвестной причине, я мог что-то упустить, но как я могу поиграть с этим, чтобы избежатьэта ошибка?

Заранее спасибо

...