nuxt / components

Scan and auto import components for Nuxt.js 2.13+
MIT License
887 stars 48 forks source link

How to avoid nuxt-i18n error when you doing testing with Jest? #252

Open AlexPG96 opened 2 years ago

AlexPG96 commented 2 years ago

This error TypeError: _vm.$t is not a function appears when I launch testing from my project components. :( I used $t('stringToTranslate') for the translations string to my multilanguage app.

I can't resolve that to get the tests passed, and I've searched different forums and i18n and Jest documentation but haven't found anything...

Anyone can help me? Thanks people!

My jest.config.js:

module.exports = {
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/$1',
    '^~/(.*)$': '<rootDir>/$1',
    '^vue$': 'vue/dist/vue.common.js'
  },
  moduleFileExtensions: [
    'js',
    'vue',
    'json'
  ],
  transform: {
    '^.+\\.js$': 'babel-jest',
    '.*\\.(vue)$': 'vue-jest'
  },
  collectCoverage: true,
  collectCoverageFrom: [
    '<rootDir>/components/**/*.vue',
    '<rootDir>/pages/**/*.vue'
  ],
  testEnvironment: 'jsdom'
}

and my test file:

import { shallowMount } from "@vue/test-utils";
import Autocomplete from '@/components/Autocomplete.vue';

const factory = () => {
  return shallowMount(Autocomplete, {
    propsData: {
      dataArr: [ ]
    },
  });
};

describe("Autocomplete", () => {
  test("mounts properly", () => {
    const wrapper = factory();
    expect(wrapper.isVueInstance()).toBeTruthy();
  });

  test("renders properly", () => {
    const wrapper = factory();

    expect(wrapper.html()).toMatchSnapshot();
  });
});